{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\qchasserieau\\AppData\\Local\\Continuum\\Anaconda3\\envs\\quetzal_env_c\\lib\\site-packages\\pyproj\\crs.py:422: FutureWarning: '+init=<authority>:<code>' syntax is deprecated. '<authority>:<code>' is the preferred initialization method.\n",
      "  projstring = _prepare_from_string(projparams)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "SQLalchemy is not installed. No support for SQL output.\n"
     ]
    }
   ],
   "source": [
    "qpath = r'../../' # path to quetzal here\n",
    "data = r'inputs/'\n",
    "import sys\n",
    "sys.path.insert(0, qpath)\n",
    "\n",
    "# import class\n",
    "from quetzal.io.gtfs_reader import importer"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "import numpy as np"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Read GTFS"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>indicator</th>\n",
       "      <th>value</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>agencies</td>\n",
       "      <td>[Bilbobus]</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>running_services</td>\n",
       "      <td>[1]</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>timezone</td>\n",
       "      <td>Europe/Madrid</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>start_date</td>\n",
       "      <td>20191210</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>end_date</td>\n",
       "      <td>20200310</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>num_routes</td>\n",
       "      <td>82</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>num_trips</td>\n",
       "      <td>3297</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>num_stops</td>\n",
       "      <td>498</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>num_shapes</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>num_frequencies</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "          indicator          value\n",
       "0          agencies     [Bilbobus]\n",
       "1  running_services            [1]\n",
       "2          timezone  Europe/Madrid\n",
       "3        start_date       20191210\n",
       "4          end_date       20200310\n",
       "5        num_routes             82\n",
       "6         num_trips           3297\n",
       "7         num_stops            498\n",
       "8        num_shapes              0\n",
       "9   num_frequencies              0"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "feed = importer.GtfsImporter(path=data + r'bilbao.zip', dist_units='m')\n",
    "feed = feed.clean()\n",
    "feed.describe()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>type</th>\n",
       "      <th>message</th>\n",
       "      <th>table</th>\n",
       "      <th>rows</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>warning</td>\n",
       "      <td>Repeated pair (trip_id, departure_time)</td>\n",
       "      <td>stop_times</td>\n",
       "      <td>[128, 4087, 4101, 4115, 4129, 4143, 4157, 4171...</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "      type                                  message       table  \\\n",
       "0  warning  Repeated pair (trip_id, departure_time)  stop_times   \n",
       "\n",
       "                                                rows  \n",
       "0  [128, 4087, 4101, 4115, 4129, 4143, 4157, 4171...  "
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "feed.validate()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div style=\"width:100%;\"><div style=\"position:relative;width:100%;height:0;padding-bottom:60%;\"><iframe src=\"data:text/html;charset=utf-8;base64,PCFET0NUWVBFIGh0bWw+CjxoZWFkPiAgICAKICAgIDxtZXRhIGh0dHAtZXF1aXY9ImNvbnRlbnQtdHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiAvPgogICAgCiAgICAgICAgPHNjcmlwdD4KICAgICAgICAgICAgTF9OT19UT1VDSCA9IGZhbHNlOwogICAgICAgICAgICBMX0RJU0FCTEVfM0QgPSBmYWxzZTsKICAgICAgICA8L3NjcmlwdD4KICAgIAogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vbGVhZmxldEAxLjUuMS9kaXN0L2xlYWZsZXQuanMiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vY29kZS5qcXVlcnkuY29tL2pxdWVyeS0xLjEyLjQubWluLmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL21heGNkbi5ib290c3RyYXBjZG4uY29tL2Jvb3RzdHJhcC8zLjIuMC9qcy9ib290c3RyYXAubWluLmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9MZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy8yLjAuMi9sZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy5qcyI+PC9zY3JpcHQ+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vbGVhZmxldEAxLjUuMS9kaXN0L2xlYWZsZXQuY3NzIi8+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vbWF4Y2RuLmJvb3RzdHJhcGNkbi5jb20vYm9vdHN0cmFwLzMuMi4wL2Nzcy9ib290c3RyYXAubWluLmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL21heGNkbi5ib290c3RyYXBjZG4uY29tL2Jvb3RzdHJhcC8zLjIuMC9jc3MvYm9vdHN0cmFwLXRoZW1lLm1pbi5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9mb250LWF3ZXNvbWUvNC42LjMvY3NzL2ZvbnQtYXdlc29tZS5taW4uY3NzIi8+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vY2RuanMuY2xvdWRmbGFyZS5jb20vYWpheC9saWJzL0xlYWZsZXQuYXdlc29tZS1tYXJrZXJzLzIuMC4yL2xlYWZsZXQuYXdlc29tZS1tYXJrZXJzLmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL3Jhd2Nkbi5naXRoYWNrLmNvbS9weXRob24tdmlzdWFsaXphdGlvbi9mb2xpdW0vbWFzdGVyL2ZvbGl1bS90ZW1wbGF0ZXMvbGVhZmxldC5hd2Vzb21lLnJvdGF0ZS5jc3MiLz4KICAgIDxzdHlsZT5odG1sLCBib2R5IHt3aWR0aDogMTAwJTtoZWlnaHQ6IDEwMCU7bWFyZ2luOiAwO3BhZGRpbmc6IDA7fTwvc3R5bGU+CiAgICA8c3R5bGU+I21hcCB7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7Ym90dG9tOjA7cmlnaHQ6MDtsZWZ0OjA7fTwvc3R5bGU+CiAgICAKICAgICAgICAgICAgPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCwKICAgICAgICAgICAgICAgIGluaXRpYWwtc2NhbGU9MS4wLCBtYXhpbXVtLXNjYWxlPTEuMCwgdXNlci1zY2FsYWJsZT1ubyIgLz4KICAgICAgICAgICAgPHN0eWxlPgogICAgICAgICAgICAgICAgI21hcF80ZmIwYmU1ZmM2Njk0YjAyYjQ2OWI5NWRkNmE5MDYzNyB7CiAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAuMCU7CiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAuMCU7CiAgICAgICAgICAgICAgICAgICAgbGVmdDogMC4wJTsKICAgICAgICAgICAgICAgICAgICB0b3A6IDAuMCU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIDwvc3R5bGU+CiAgICAgICAgCiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvbGVhZmxldC5tYXJrZXJjbHVzdGVyLzEuMS4wL2xlYWZsZXQubWFya2VyY2x1c3Rlci5qcyI+PC9zY3JpcHQ+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vY2RuanMuY2xvdWRmbGFyZS5jb20vYWpheC9saWJzL2xlYWZsZXQubWFya2VyY2x1c3Rlci8xLjEuMC9NYXJrZXJDbHVzdGVyLmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9sZWFmbGV0Lm1hcmtlcmNsdXN0ZXIvMS4xLjAvTWFya2VyQ2x1c3Rlci5EZWZhdWx0LmNzcyIvPgo8L2hlYWQ+Cjxib2R5PiAgICAKICAgIAogICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb2xpdW0tbWFwIiBpZD0ibWFwXzRmYjBiZTVmYzY2OTRiMDJiNDY5Yjk1ZGQ2YTkwNjM3IiA+PC9kaXY+CiAgICAgICAgCjwvYm9keT4KPHNjcmlwdD4gICAgCiAgICAKICAgICAgICAgICAgdmFyIG1hcF80ZmIwYmU1ZmM2Njk0YjAyYjQ2OWI5NWRkNmE5MDYzNyA9IEwubWFwKAogICAgICAgICAgICAgICAgIm1hcF80ZmIwYmU1ZmM2Njk0YjAyYjQ2OWI5NWRkNmE5MDYzNyIsCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgY2VudGVyOiBbMCwgMF0sCiAgICAgICAgICAgICAgICAgICAgY3JzOiBMLkNSUy5FUFNHMzg1NywKICAgICAgICAgICAgICAgICAgICB6b29tOiAxLAogICAgICAgICAgICAgICAgICAgIHpvb21Db250cm9sOiB0cnVlLAogICAgICAgICAgICAgICAgICAgIHByZWZlckNhbnZhczogZmFsc2UsCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICk7CgogICAgICAgICAgICAKCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHRpbGVfbGF5ZXJfYjhkMTgzMDlhMzczNDQ1NTg0Njg1OWRhOWRjYmU0MzYgPSBMLnRpbGVMYXllcigKICAgICAgICAgICAgICAgICJodHRwczovL2NhcnRvZGItYmFzZW1hcHMte3N9Lmdsb2JhbC5zc2wuZmFzdGx5Lm5ldC9saWdodF9hbGwve3p9L3t4fS97eX0ucG5nIiwKICAgICAgICAgICAgICAgIHsiYXR0cmlidXRpb24iOiAiXHUwMDI2Y29weTsgXHUwMDNjYSBocmVmPVwiaHR0cDovL3d3dy5vcGVuc3RyZWV0bWFwLm9yZy9jb3B5cmlnaHRcIlx1MDAzZU9wZW5TdHJlZXRNYXBcdTAwM2MvYVx1MDAzZSBjb250cmlidXRvcnMgXHUwMDI2Y29weTsgXHUwMDNjYSBocmVmPVwiaHR0cDovL2NhcnRvZGIuY29tL2F0dHJpYnV0aW9uc1wiXHUwMDNlQ2FydG9EQlx1MDAzYy9hXHUwMDNlLCBDYXJ0b0RCIFx1MDAzY2EgaHJlZiA9XCJodHRwOi8vY2FydG9kYi5jb20vYXR0cmlidXRpb25zXCJcdTAwM2VhdHRyaWJ1dGlvbnNcdTAwM2MvYVx1MDAzZSIsICJkZXRlY3RSZXRpbmEiOiBmYWxzZSwgIm1heE5hdGl2ZVpvb20iOiAxOCwgIm1heFpvb20iOiAxOCwgIm1pblpvb20iOiAwLCAibm9XcmFwIjogZmFsc2UsICJvcGFjaXR5IjogMSwgInN1YmRvbWFpbnMiOiAiYWJjIiwgInRtcyI6IGZhbHNlfQogICAgICAgICAgICApLmFkZFRvKG1hcF80ZmIwYmU1ZmM2Njk0YjAyYjQ2OWI5NWRkNmE5MDYzNyk7CiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGZhc3RfbWFya2VyX2NsdXN0ZXJfYzY3YzhkODg4NTU4NDM1YjhjZjkyZTRhY2Q4YzNjODEgPSAoZnVuY3Rpb24oKXsKICAgICAgICAgICAgICAgIHZhciBjYWxsYmFjayA9ICAgICBmdW5jdGlvbiAocm93KSB7CiAgICAgICAgdmFyIGltYXJrZXI7CiAgICAgICAgbWFya2VyID0gTC5jaXJjbGVNYXJrZXIobmV3IEwuTGF0TG5nKHJvd1swXSwgcm93WzFdKSwKICAgICAgICAgICAgeydyYWRpdXMnOiA4LCAnZmlsbCc6ICd0cnVlJywgJ2NvbG9yJzogJyNmYzhkNjInLCAnd2VpZ2h0JzogMSwgJ2ZpbGxPcGFjaXR5JzogMC43NX0KICAgICAgICApOwogICAgICAgIG1hcmtlci5iaW5kUG9wdXAoCiAgICAgICAgICAgICc8Yj5TdG9wIG5hbWU8L2I+OiAnICsgcm93WzJdICsgJzxicj4nICsKICAgICAgICAgICAgJzxiPlN0b3AgSUQ8L2I+OiAnICsgcm93WzNdCiAgICAgICAgKTsKICAgICAgICByZXR1cm4gbWFya2VyOwogICAgfTsKICAgIDsKCiAgICAgICAgICAgICAgICB2YXIgZGF0YSA9IFtbNDMuMjY2MjQxMzE0Mjk5MDgsIC0yLjkyMjg4Mzg0ODE2NDQ5NjUsICJBbnNlbG1hIGRlIFNhbGNlcyAoMikiLCAiMjIwMSJdLCBbNDMuMjY2Njk4NTgyMzk4MzcsIC0yLjkxOTU2MDgyMDI4NjUzMTMsICJUcmF1a28gKDE0KSIsICIyNDE3Il0sIFs0My4yNTk0MDI4NzY1ODcxNzQsIC0yLjkwMDMwMTMyNjk5NjQxNTUsICJLZXBhIEVuYmVpdGlhIFwiVXJyZXR4aW5kb3JyYVwiIiwgIjMxMDMiXSwgWzQzLjI2MzYxNTE0NjM1MzI3NCwgLTIuOTM5MTg3MzcxODk2MTk5LCAiR3JlZ29yaW8gbGEgUmV2aWxsYSAxIiwgIjYyMDkiXSwgWzQzLjI2MTU5MTQzOTA0MDQyLCAtMi45NDAwMzI0NTAxOTA3NTYsICJHcmVnb3JpbyBsYSBSZXZpbGxhIDE3IiwgIjYyMTAiXSwgWzQzLjI0ODkyMjc4NDMzNDExLCAtMi45NDQ3OTQ1Mzk1MTY2OTkyLCAiWGFsYmFkb3IgLyAoQWxoXHUwMGYzbmRpZ2EpIiwgIjczMTciXSwgWzQzLjI0ODg3NTI3NDUwMTg1NiwgLTIuOTQ0NzUxNDk4Mzg0Mjc2NiwgIlhhbGJhZG9yIC8gQWxoXHUwMGYzbmRpZ2EiLCAiNzMxOCJdLCBbNDMuMjUwMTcyOTI5OTU0NzYsIC0yLjk0NDc3MDE0NzY4NDg0NjcsICJYYWxiYWRvciAvIEYuQmFsZGV6YXRlIiwgIjczMTkiXSwgWzQzLjI0Njk4ODM4MzEyNTg5NSwgLTIuOTUwNjAyMzI0MjkxODU5NSwgIkFybW90eGFiaWRlYSIsICI3NTExIl0sIFs0My4yNTYyMjc5NDM5NDM1NjQsIC0yLjk0NjQ1Mzg3ODA4MDU2OCwgIlVya2lvbGEgMSIsICI4MTE4Il0sIFs0My4yNjI1Mjc5MzE0NzQ0NCwgLTIuOTQ3MzQyNjU2NzUwNjc2LCAiVXJxdWlqbyAxMDAiLCAiODEyNCJdLCBbNDMuMjc3NzA5MjI2MDA4MzUsIC0yLjk2MDc5MjY0NTkwMTI1NywgIkwuIEFndWlycmUgMTQ5IiwgIjExMDEiXSwgWzQzLjI3ODgzMzM1MjA5NDg0LCAtMi45NjExOTQ0MDgwMzk4NDM2LCAiTC4gQWd1aXJyZSAxNTQiLCAiMTEwMiJdLCBbNDMuMjc5NDA0OTE2MjU2NDUsIC0yLjk2MTczNzkxOTg0MTYyODUsICJMLiBBZ3VpcnJlIDE2MSIsICIxMTAzIl0sIFs0My4yODE3MDUzMDI5NDA3MTUsIC0yLjk2MjgxMjg1MzU0Nzg5NywgIkwuIEFndWlycmUgMTcyIC8gTGV2YW50ZSBwbC4iLCAiMTEwNCJdLCBbNDMuMjgxNzMxNzI5NjIzMDU0LCAtMi45NjMwMjUxMjQwNTIxMTA0LCAiTC4gQWd1aXJyZSAxNzkiLCAiMTEwNSJdLCBbNDMuMjgzNzk3MzM1Nzc2MzU2LCAtMi45NjI1OTYxMTQ1NDc5NzA3LCAiT3JpeGUgNTQiLCAiMTEwNiJdLCBbNDMuMjg0MDU2MTY2NDE3NTcsIC0yLjk2NTQ0MzE0MTQ0ODg1NiwgIkkuIEVsbGFjdXJpYSAvIEVsb3JyaWV0YSIsICIxMjAxIl0sIFs0My4yNzQ3MTk2MTQwMzY1NiwgLTIuOTU4NTg5NTcxNDUyMjExMiwgIkwuIEFndWlycmUgKDg5KSAvIFNhcnJpa28iLCAiMTMwMSJdLCBbNDMuMjczMzA0OTI4MDIyNiwgLTIuOTU1MzM0ODMxNTEzMTkxMywgIkRvbiBCb3NjbyAvIFVnYXJ0ZWtvIiwgIjEzMDIiXSwgWzQzLjI3NTg3MjEyMzgzMTAyLCAtMi45NTk3NjQ5Mzc4Mjg2MTM3LCAiTC4gQWd1aXJyZSAxMzUgLyAoUmVzaWRlbmNpYSkiLCAiMTMwMyJdLCBbNDMuMjc2Nzc2MDE1MzUyMDU2LCAtMi45NjAwNTYxMDUxMDIzNTM3LCAiTC4gQWd1aXJyZSAxNDAgLyBSZXNpZGVuY2lhIiwgIjEzMDQiXSwgWzQzLjI3Mzc2OTIyMzcyMzQzNCwgLTIuOTU3NTQ4MTg5MDMzNDU3NCwgIkwuIEFndWlycmUgODEiLCAiMTMwNSJdLCBbNDMuMjczODQwOTQxNjMwODIsIC0yLjk1NTQxMjcwNzUxMTE1NjMsICJVZ2FydGVrbyAvIEliYXJyZWtvbGFuZGEiLCAiMTMwNiJdLCBbNDMuMjc0MTQwNDIwNzkzNTcsIC0yLjk0OTc0MTM5MTg3MzAzLCAiQXJhbmVrbyAoMjIpIiwgIjE0MDEiXSwgWzQzLjI3MDA3NDc3MjgzMzUxLCAtMi45NDY5NzEyNTgyMTE4MzMzLCAiQmxhcyBkZSBPdGVybyAoMjMpIC8gQW5idWxhdG9yaW9hIiwgIjE0MDIiXSwgWzQzLjI2OTgyNTU4ODEyNjEsIC0yLjk1MTgxNDE3MTg3NjM1MzMsICJCbGFzIGRlIE90ZXJvICg1NykiLCAiMTQwMyJdLCBbNDMuMjY5MTY2NDc1Mjk0Mjg0LCAtMi45NDM2MTc1ODc0MDcwNTYsICJCb3Rpa2EgWmFoYXJyYSAvIChILmRlIGxhIFRvcnJlKSIsICIxNDA0Il0sIFs0My4yNjk3NjExODQ3NzAyOCwgLTIuOTQwNzE5OTAwNTA1NDM2LCAiQm90aWthIFphaGFycmEgLyBEZXVzdHVrbyBadWJpYSIsICIxNDA1Il0sIFs0My4yNjkyNjQ5NDAxMjQzNiwgLTIuOTQzNjY1ODg4ODIyNzg0LCAiQm90aWthIFphaGFycmEgLyBILmRlIGxhIFRvcnJlIiwgIjE0MDciXSwgWzQzLjI2OTk4MjIxNTk2MzAxLCAtMi45NDAzMjU1MTE0NjY5Njc1LCAiQm90aWthIFphaGFycmEgMSIsICIxNDA4Il0sIFs0My4yNzA5NzIxNzgzMzM1NSwgLTIuOTQwODU3NDI3MjA0Mjc0NSwgIkhlcm1hbm9zIEFndWlycmUgLyBVbmliZXJ0c2l0YXRlYSIsICIxNDEwIl0sIFs0My4yNzM2NTIyNDAwMDE3MjQsIC0yLjk1NDQyNzg1MTkyNzc1NDUsICJJYmFycmVrb2xhbmRhIDE5IiwgIjE0MTEiXSwgWzQzLjI3MjcxMDQyMjM1OTY1LCAtMi45NTU0MzUxMjI0MzI1MzMsICJEb24gQm9zY28gLyAoVWdhcnRla28pIiwgIjE0MTIiXSwgWzQzLjI3MTcxNjU0NzA4NzcwNiwgLTIuOTQ0OTM1OTI0Njc2MzM2LCAiTC4gQWd1aXJyZSAvIEhpemt1bnR6YSBFc2tvbGEiLCAiMTQxMyJdLCBbNDMuMjcxOTI1NDk4MDA5MDI2LCAtMi45NTAwOTYzNDYxMDAzOTk3LCAiTC4gQWd1aXJyZSAvIChCaWRhcnRlKSIsICIxNDE0Il0sIFs0My4yNzIxMjE1NzU0Nzk0OSwgLTIuOTUwNTk0MjA4NzM2MjkxNSwgIkwuIEFndWlycmUgNDIgLyBCaWRhcnRlIiwgIjE0MTUiXSwgWzQzLjI3MDYxMTg0ODQzNDI1LCAtMi45NDczOTA3NTE2NjkyMjE1LCAiTHVpcyBQb3dlciAoMTgpIC8gQW5idWxhdG9yaW9hIiwgIjE0MTYiXSwgWzQzLjI2ODcwODI3NzA5ODY1LCAtMi45NDcyMzkyNDQ1ODE4OTA1LCAiTHVpcyBQb3dlciAoNCkgLyBLaXJvbGRlZ2lhIiwgIjE0MTciXSwgWzQzLjI3MDcxNDEwMTI2MjM3LCAtMi45NTY4NDM4OTE5MDk4NjE2LCAiTWFkYXJpYWdhIC8gKEJhc2FiZSkiLCAiMTQxOCJdLCBbNDMuMjcwNzg0MTI0NTE3MTg1LCAtMi45NTQ1MDUwNDM4MzE3NjM3LCAiTWFkYXJpYWdhIC8gKExhIFNhbGxlKSIsICIxNDE5Il0sIFs0My4yNzA2NTA3MzY0ODIyMywgLTIuOTU2NTI0NDkwOTMzNjcwNSwgIk1hZGFyaWFnYSAvIEJhc2FiZSIsICIxNDIwIl0sIFs0My4yNzA2OTM5ODYzNTI3NSwgLTIuOTU0OTE2NTM4NzIwMDg3NSwgIk1hZGFyaWFnYSAvIExhIFNhbGxlIiwgIjE0MjEiXSwgWzQzLjI3MTk0NzgwNjA3NTQ3LCAtMi45NDUwODUzOTU3NzIyNTQ3LCAiU2FuIFBlZHJvIC8gRWxpemEiLCAiMTQyMyJdLCBbNDMuMjcwOTQ2Njg1Njk1OTc1LCAtMi45NDE1NDI4OTg4NDY2NTMsICJTYW4gUFx1MDBlZG8gWCAvIEYuTWFjaVx1MDBlMSIsICIxNDI0Il0sIFs0My4yNzEwMjYwMjQyMTUwMDQsIC0yLjk0MTIzOTg3ODY2NjQ0NSwgIlNhbiBQXHUwMGVkbyBYIC8gSC5BZ3VpcnJlIiwgIjE0MjUiXSwgWzQzLjI3MTI5MTQwNDk2MTkzLCAtMi45NTI2MDUxNjM2NTY5MTYsICJTYWdyYWRhIEZhbWlsaWEgLyAoU2FsZXNpYW5vcykiLCAiMTQyOCJdLCBbNDMuMjY1NjY5MTEwODE4MTcsIC0yLjk1NzkzNDkwNzEzMzQ2MjQsICJSaWJlcmEgZGUgRGV1c3R1ICgyOCkiLCAiMTUwMSJdLCBbNDMuMjY2NDA3NDc3Mzc2NDQsIC0yLjk1OTQ4ODE0MzQ1NTE1NiwgIlJpYmVyYSBkZSBEZXVzdHUgKDM2KSIsICIxNTAzIl0sIFs0My4yNjgwMjA3OTAyNTg5MywgLTIuOTYxNDk0MDIyNTQzMzAxNSwgIlJpYmVyYSBkZSBEZXVzdHUgKDU5KSIsICIxNTA0Il0sIFs0My4yNzA3NjU4Mzc3ODE0MywgLTIuOTY0MzIyMDA2MDU5MzQxNiwgIlJpYmVyYSBkZSBEZXVzdHUgKDg3KSIsICIxNTA1Il0sIFs0My4yNjU2NDQ1MDI4NTM5LCAtMi45NTcxMjkwNjc0NDg5MjM1LCAiUmliZXJhIGRlIERldXN0dSAyMCIsICIxNTA2Il0sIFs0My4yNjY1NTE4OTgzNDA5LCAtMi45NTk1NzU0NTM0Mzc1Mzc0LCAiUmliZXJhIGRlIERldXN0dSAzNiIsICIxNTA4Il0sIFs0My4yNjc5NDUzNjIwNzkwMSwgLTIuOTYxMjkyNTA0NDUxMzIyNywgIlJpYmVyYSBkZSBEZXVzdHUgNTciLCAiMTUwOSJdLCBbNDMuMjcwNzk4NjYwNDEyNTgsIC0yLjk2NDI2MTMyNzg3NjE2NSwgIlJpYmVyYSBkZSBEZXVzdHUgODciLCAiMTUxMCJdLCBbNDMuMjc0NjczMzYyMDMxMzY1LCAtMi45NjcxMjA3MTQ4NDQ2NSwgIlpvcnJvdHphdXJyZSAoMTcpIiwgIjE1MTEiXSwgWzQzLjI3NjgwMjQzODc1NzM5LCAtMi45NjgxNjA1NDc3NTg0NjgsICJab3Jyb3R6YXVycmUgKDM2KSIsICIxNTEyIl0sIFs0My4yNzI1OTAwNDU1OTIyMSwgLTIuOTY1MzIxMzc0NTEzOTEyNiwgIlpvcnJvdHphdXJyZSAoOSkiLCAiMTUxMyJdLCBbNDMuMjc0NTU5MDkzNzMwMDc2LCAtMi45NjY5MDI5NjE0Mzc5MjYzLCAiWm9ycm90emF1cnJlIDE3IiwgIjE1MTQiXSwgWzQzLjI3MjQ1MDc5NDMxNzk5LCAtMi45NjUxNzE5MzQ4NDI2ODM1LCAiWm9ycm90emF1cnJlIDkiLCAiMTUxNSJdLCBbNDMuMjc0MDk4OTg1MTE1NjUsIC0yLjk0ODQ1OTQxOTIwMTQ0MTcsICJBcmFuZWtvIDE3IiwgIjE2MDEiXSwgWzQzLjI3NjA1MDgxODc2NDI1LCAtMi45NDk1MDE4NTg2NTkyNzQ1LCAiQmVycml6YmlkZWEgLyBBbmJ1bGF0b3Jpb2EiLCAiMTYwMiJdLCBbNDMuMjc0NDc0NTY3MTkzNjE0LCAtMi45NDcxOTk1NjA3Njk4ODM4LCAiRWdpbGVvciA0IiwgIjE2MDMiXSwgWzQzLjI3NTQxMjQ0MzA4NzA5LCAtMi45NDc0MjA4NTc2NDY2ODI3LCAiR2FuZXRhIE1lbmRpYSAoNykiLCAiMTYwNCJdLCBbNDMuMjc1Mzk4NTEwMDA2MjU1LCAtMi45NDk2MTc2MTIzNzQ4MjIsICJNaXJhbWFyYmlkZWEgLyBFc2tvbGEiLCAiMTYwNSJdLCBbNDMuMjc2NTcyMzczNDAwNTksIC0yLjk1MDUwMTc2NzYwODI0MzcsICJWaXJnZW4gZGVsIFBpbmFyIDUiLCAiMTYwNiJdLCBbNDMuMjc2MTQyODg5ODIxNDM2LCAtMi45NTAwNzM4MjU3Njk3MTc3LCAiVmlyZ2VuIGRlbCBQaW5hciA5IiwgIjE2MDciXSwgWzQzLjI3NDc1NDIwNDM3MTEwNiwgLTIuOTQ2ODYwMzQzNzcwMDI4NSwgIkdhbmVrb2dvcnRhIDEwIiwgIjE2MDgiXSwgWzQzLjI3NDM4MTY0ODg3NTExNCwgLTIuOTQ1NzY1MjgwNjUzOTYzLCAiR29yYmVpYSAoMykiLCAiMTYwOSJdLCBbNDMuMjc1NDQ4MDYyNzQ5MjQsIC0yLjk1MjM5NTU3MjUyMjQ3NjYsICJBcmFuZWtvYmlkZWEgLyBDZW1lbnRlcmlvIiwgIjE3MDEiXSwgWzQzLjI3Njg3NzE0MTkxNzg4NiwgLTIuOTUzMjE3MTkxODM4MjQwNCwgIk1pcmFtYXJiaWRlYSAoNDcpIiwgIjE3MDIiXSwgWzQzLjI3NjU0NDc5OTI3MTk3LCAtMi45NTM4NDQxMTgwNjg1MjksICJNaXJhbWFyYmlkZWEgLyBBcmFuZWtvYmlkZWEiLCAiMTcwMyJdLCBbNDMuMjY2NDM0OTAzODkxMzUsIC0yLjkyNjgyODE1MDA3NTM3MywgIkNhbXBvIFZvbGFudFx1MDBlZG4gKDIxKSIsICIyMTAxIl0sIFs0My4yNjQ0OTIxMzE2MDA2MSwgLTIuOTI0NTA2MDc1ODM0MzAzMywgIkNhbXBvIFZvbGFudFx1MDBlZG4gKDQpIiwgIjIxMDIiXSwgWzQzLjI2OTIyNjQxMTgxMjY0NiwgLTIuOTMwMzM2NTE1NjMyNzA4LCAiQ2FtcG8gVm9sYW50XHUwMGVkbiAvIExhIFNhbHZlIiwgIjIxMDMiXSwgWzQzLjI2NTIzMDg2NTMzMDkwNiwgLTIuOTI1MjIzOTc3ODMzMjQzNiwgIkNhbXBvIFZvbGFudFx1MDBlZG4gMTMiLCAiMjEwNCJdLCBbNDMuMjY2ODMwMTI2ODcyMTg2LCAtMi45MjcyMzYwOTMxMDU2MTg1LCAiQ2FtcG8gVm9sYW50XHUwMGVkbiAyMyIsICIyMTA1Il0sIFs0My4yNjgzNzExODA3ODM2NDYsIC0yLjkyNjQ3ODM1ODQxMDAwNCwgIkNhc3RhXHUwMGYxb3MgLyBGdW5pa3VsYXJyYSIsICIyMTA3Il0sIFs0My4yNjM5Mzg3NTkxODA4OCwgLTIuOTIzNTc5MDgwNDgwNzIyNywgIkVybmVzdG8gRXJrb3Jla2EgLyBVZGFsZXR4ZWEiLCAiMjEwOCJdLCBbNDMuMjY5NjgwMTEyMDY2Nzk0LCAtMi45MzEzODMwNjI4MjU0MjY1LCAiTGEgU2FsdmUgLyBJZ29nYWlsdWEiLCAiMjEwOSJdLCBbNDMuMjY2MjA4ODk0NTIyODIsIC0yLjkyNTQ5MDk3Nzg5ODYwMDcsICJUaWJvbGkgMSIsICIyMTEwIl0sIFs0My4yNjkyMDc2NDI3NTMwOTUsIC0yLjkyODYyODQ5ODE5MDgwNzUsICJUcmlzdFx1MDBlMW4gZGUgTGVndWl6YW1cdTAwZjNuIDUiLCAiMjExMSJdLCBbNDMuMjY0OTgyMjYxMjg4NzUsIC0yLjkyMjQ3NjQ3MDc1MDI1OTcsICJLcmlzdG8gMSIsICIyMjAyIl0sIFs0My4yNjgwNTI1NjkyNTU5MzYsIC0yLjkyNDQ0MzY4ODA3NjMzMiwgIk1hdGlrbyAxIiwgIjIyMDMiXSwgWzQzLjI2OTMwNzE1NDM1ODMsIC0yLjkyNDYxMTU2ODg3MjE0NSwgIlJpY2FyZG8gQXJyZWd1aSAzMyIsICIyMjA1Il0sIFs0My4yNjcxODQ2MDMzNzkwMTUsIC0yLjkyNTE4NDM2NjI3MTQ3ODcsICJUaWJvbGkgMTIiLCAiMjIwNiJdLCBbNDMuMjcwMDgzODk0NzkwMjA0LCAtMi45MjYwMDM1NjIxMjI4NzMzLCAiTWF1cmljZSBSYXZlbCAvIENpdWRhZCBKYXJkXHUwMGVkbiIsICIyMzAxIl0sIFs0My4yNzIzMzgwOTE0MjU4NSwgLTIuOTI1Mjg3NTYwMDk1MDU0MywgIlZcdTAwZWRhIFZpZWphIGRlIExlemFtYSA4NSIsICIyMzAyIl0sIFs0My4yNzI2NDM4NDc1Mjg2ODQsIC0yLjkyNTkzMzk3MDc2MjIxODcsICJWXHUwMGVkYSBWaWVqYSBkZSBMZXphbWEgOTMiLCAiMjMwMyJdLCBbNDMuMjY4MzE5OTIwNzcyODksIC0yLjkxODYxNDM1MDc4ODQwMiwgIkFsZGFtaXogTWVuZGlhIC8gVGVsZWZcdTAwZjNuaWNhIiwgIjI0MDEiXSwgWzQzLjI2NzQzODAwNzgxMjE2LCAtMi45MTk4NzAwNDM3NTMyNzcsICJJemFybyBNZW5kaWEgOCIsICIyNDAyIl0sIFs0My4yNjk2Njg2MTMzODM3MywgLTIuOTIyNDc5MjE0NDc4Mzc2NCwgIk1hdXJpY2UgUmF2ZWwgLyAoTWlyYWRvcikiLCAiMjQwMyJdLCBbNDMuMjY5ODMxMzcxNDg0OTI2LCAtMi45MjI1NzI4NDU1MTc1MDc3LCAiTWF1cmljZSBSYXZlbCAvIE1pcmFkb3IiLCAiMjQwNCJdLCBbNDMuMjY3ODMwMzcwMzg5NTc1LCAtMi45MTg0MzQ4NTAxODE5OTE0LCAiTWF1cmljZSBSYXZlbCAyMCAvIFRlbGVmXHUwMGYzbmljYSIsICIyNDA1Il0sIFs0My4yNjc2NDE0MTAyNDcwNiwgLTIuOTE4NDI2NjI0NzUxOTkyLCAiTWF1cmljZSBSYXZlbCA3IC8gKFRlbGVmXHUwMGYzbmljYSkiLCAiMjQwNiJdLCBbNDMuMjY1NTMwODIxODE3NjU2LCAtMi45MTY4NzgwNjczMjA2MjgsICJNXHUwMGZhc2ljbyBHdXJpZGkiLCAiMjQwNyJdLCBbNDMuMjY1OTY0NTEyOTk3OTk2LCAtMi45MTgwODU3MzMxMDM2NzgyLCAiU2FuIEJhbGVudGluIEJlcnJpb3R4b2EgKDEpIiwgIjI0MDgiXSwgWzQzLjI2NzE3NTU3MjQzNDQ2LCAtMi45MjEzMzQ1NDM1NDM1MjM0LCAiVHJhdWtvICg1KSIsICIyNDA5Il0sIFs0My4yNjcyNjE2NjA2Njg4ODYsIC0yLjkyMTUwNTA4NzA3NzIxNywgIlRyYXVrbyAzIiwgIjI0MTAiXSwgWzQzLjI2OTMyMTEyMDcwNDUsIC0yLjkxODYyOTczNjUwMDc4OTQsICJWXHUwMGVkYSBWaWVqYSBkZSBMZXphbWEgLyBOdWV2YSBBdXJvcmEiLCAiMjQxMSJdLCBbNDMuMjY3OTk0NTM3MzQ3MzYsIC0yLjkxNTY4NDc3MDk5MDQ1MiwgIlZcdTAwZWRhIFZpZWphIGRlIExlemFtYSA1OSIsICIyNDEyIl0sIFs0My4yNzAxMjcyMjg3NDMwOSwgLTIuOTE5Nzk2NTU3NDk4OTM4LCAiVlx1MDBlZGEgVmllamEgZGUgTGV6YW1hIDczIiwgIjI0MTMiXSwgWzQzLjI3MTQwMTA5NzEzMzcwNSwgLTIuOTIxMTQ2NzcwMDQ4NTQ5NiwgIlZcdTAwZWRhIFZpZWphIGRlIExlemFtYSA3NSAvIE1vbnRhXHUwMGYxbyIsICIyNDE0Il0sIFs0My4yNjQ5MDAyNzM4NDU0NiwgLTIuOTE4MzM1NzMyMjAwMjYwOCwgIlp1bWFsYWNcdTAwZTFycmVndWkgLyBULlp1YmlyaWEiLCAiMjQxNSJdLCBbNDMuMjY2NzA5MTYyMjA4NzMsIC0yLjkxOTczNzk1NDEwODExNDMsICJUcmF1a28gMTQiLCAiMjQxNiJdLCBbNDMuMjYyMjUzMDM3MjI3NzksIC0yLjkxMzA3MzAzNzgwNTI2NTQsICJBbmRyYW1hcmlhIiwgIjI1MDEiXSwgWzQzLjI2MTI4OTk3MDc4NTMzNCwgLTIuOTExNDQ4OTkwNzYyNzkwNSwgIkFyYWJlbGxhIiwgIjI1MDIiXSwgWzQzLjI2NTUxMzY0MzEwODQ2LCAtMi45MTY2ODMxMDkwNzgxNjgsICJBcnR6YWluIE9uYXJlbiA0IiwgIjI1MDMiXSwgWzQzLjI2MDY1ODE0Mjk0NzU5LCAtMi45MTI1OTQ2NDMzODgwODgsICJTYW4gSXNpZHJvIiwgIjI1MDQiXSwgWzQzLjI2NDY2NjYxMjM3MDc5LCAtMi45MTM2MTQ4MjQyODU5Nzc2LCAiVlx1MDBlZGEgVmllamEgZGUgTGV6YW1hIC8gSXR1cnJpb25kbyIsICIyNTA1Il0sIFs0My4yNjIzOTE0MDAwNzExNDUsIC0yLjkxNTMwNzM1NDM4Mjk0OSwgIlZcdTAwZWRhIFZpZWphIGRlIExlemFtYSAyIiwgIjI1MDYiXSwgWzQzLjI2NTM0NTQ5Nzk3NDgxLCAtMi45MTMzMDUzNDU5MzY0MjUsICJWXHUwMGVkYSBWaWVqYSBkZSBMZXphbWEgMzUiLCAiMjUwNyJdLCBbNDMuMjYxNTMxMDAyMDY1NDEsIC0yLjkxNTI3NDI2NzU0NDQ0NjcsICJadW1hbGFjXHUwMGUxcnJlZ3VpIDEwNSIsICIyNTA4Il0sIFs0My4yNjAzMTU1NDczMDc2MSwgLTIuOTE0MDQ0NDQ2MDM2NDU1LCAiWnVtYWxhY1x1MDBlMXJyZWd1aSAxMjEiLCAiMjUwOSJdLCBbNDMuMjY0NzcyNzMzNDQzNzM1LCAtMi45MTE3OTc4MTY2OTU4MzUsICJadXJiYXJhbmJhcnJpIiwgIjI1MTAiXSwgWzQzLjI2MzAzMDE1MDQxMjEsIC0yLjkxMDkxNTY2OTE2MzUzNDUsICJTYXJyaWt1ZSIsICIyNjAxIl0sIFs0My4yNjExMjE0MjcxOTg5MiwgLTIuOTExMjAxODAxNTM0ODk1NSwgIlphYmFsYmlkZSAoMTEyKSAvIEFyYWJlbGxhIiwgIjI2MDIiXSwgWzQzLjI3MTM5ODIyNTAwNjAyNCwgLTIuOTIxMDIwOTg0NDQyMDIzNCwgIlZcdTAwZWRhIFZpZWphIGRlIExlemFtYSAoNzUpIC8gTW9udGFcdTAwZjFvIiwgIjI3MDEiXSwgWzQzLjI3MjMzODYzMjIxODgyNiwgLTIuOTI1MDk5NTIwNDMzMzMsICJWXHUwMGVkYSBWaWVqYSBkZSBMZXphbWEgKDg1KSIsICIyNzAyIl0sIFs0My4yNjc4ODg3NDY2NDkxOSwgLTIuOTE1NDk2NjI5MDU3MTM2MiwgIlZcdTAwZWRhIFZpZWphIGRlIExlemFtYSA3MCIsICIyNzAzIl0sIFs0My4yNjk0MjIxMjQxNDM2MywgLTIuOTE4ODQzODg0NDY5Mzk0NSwgIlZcdTAwZWRhIFZpZWphIGRlIExlemFtYSA3OCIsICIyNzA0Il0sIFs0My4yNzAxNDMzMzkyMzc0OSwgLTIuOTE5NzUyNDU2MTUzMDExMywgIlZcdTAwZWRhIFZpZWphIGRlIExlemFtYSA4MiIsICIyNzA1Il0sIFs0My4yNjA4MTQ4MDkwMDg3NCwgLTIuODk2NjU4ODQyMDIzMjczNywgIkFyYm9sYW50eGEgMTgiLCAiMzEwMSJdLCBbNDMuMjU3MzMxNzcwODg5OCwgLTIuODk5MDY0NTc3OTQ5NTQ5NiwgIkp1bGlcdTAwZTFuIEdhaWFycmUgKDYxKSIsICIzMTAyIl0sIFs0My4yNTc5ODgxODU4NDc4NCwgLTIuODk4MDA2MzA4ODY0NTcxMywgIkxhbmdhcmFuICgzKSAvIE1lcmthdHVhIiwgIjMxMDQiXSwgWzQzLjI2MDQ5ODE1OTM0NTU2NiwgLTIuODk3OTA3MjY4Njg4NDY1NywgIkxhbmdhcmFuIDQ0IiwgIjMxMDUiXSwgWzQzLjI2MDg0OTY0NTEyNjE5LCAtMi44OTg4MjcyMzQ1MjMwNDUsICJMYXJyYXR1bmR1IDIxIiwgIjMxMDYiXSwgWzQzLjI1NzcwODMxMzc2MTc0NiwgLTIuODk5MDQzOTY3Mjc2NDM0MywgIlBhdSBDYXNhbHMgKDIxKSAvIEMuQ1x1MDBlZHZpY28iLCAiMzEwNyJdLCBbNDMuMjU4Njc2NDc4MzgxMzk2LCAtMi45MDI3MjA0Njk5MjA4NDg0LCAiUGF1IENhc2FscyAvIEplc1x1MDBmYXMgR2FsXHUwMGVkbmRleiIsICIzMTA4Il0sIFs0My4yNTkzMjg4OTc4MzMyMiwgLTIuOTAwMjc5MzI3MTcxNzMyNiwgIlBhdSBDYXNhbHMgMTYiLCAiMzEwOSJdLCBbNDMuMjU4OTA2OTA2MjY1MTc1LCAtMi44OTc3MDI3NjA1NTc4MDI3LCAiVHhvdGVuYSAvIExhbmdhcmFuIiwgIjMxMTAiXSwgWzQzLjI1ODc1NTY4NzQzNzkwNSwgLTIuODk2NzIzODEyMTAzNjMyLCAiVHhvdGVuYSA2MiIsICIzMTExIl0sIFs0My4yNTczNzk1Njc0MDgxOSwgLTIuODk2NTA2MTE2NjkzNzQ0LCAiVHhvdGVuYSA4IiwgIjMxMTIiXSwgWzQzLjI2MDYwNjMzNTQyNDA3LCAtMi45MDEyNDUxMTQyNDA2NDksICJVZ2FydGUgKDcpIiwgIjMxMTMiXSwgWzQzLjI2MTM0ODgyODM3NDE0NiwgLTIuOTAwMzc1NzUxMTI5OTQsICJVZ2FydGUgMiIsICIzMTE0Il0sIFs0My4yNTk2OTU3ODExMzIzNjUsIC0yLjkwMDQ3MTcwOTIxMjI0NDUsICJaaXplcnVlbmEgLyBFbGl6YSIsICIzMTE1Il0sIFs0My4yNjEzMzYwNzQwMDY5OCwgLTIuODk5NTc4Njg4OTM2MzIxMywgIlppemVydWVuYSAyMiIsICIzMTE2Il0sIFs0My4yNTYzMDMyMjI0NzYwNCwgLTIuOTAzODI3NTE5NTg3MzI5MywgIkFydGFsYW5kaW8gMyAvIERyLk9ybmlsbGEiLCAiMzIwMSJdLCBbNDMuMjU0OTExODI4MTM4OCwgLTIuOTA3MjA4NDIyODA5MjY2NSwgIkRyLiBPcm5pbGxhICgxMikiLCAiMzIwMiJdLCBbNDMuMjU2MTIwOTA5MDA2MTEsIC0yLjkwNDQxMzM1ODM2Njk5MzgsICJEci4gT3JuaWxsYSAvIEFydGFsYW5kaW8iLCAiMzIwMyJdLCBbNDMuMjU4NDQwODA1NDkyMDY0LCAtMi45MDI3MjI4OTI0NzUxNzcsICJEci4gT3JuaWxsYSAvIFBhdSBDYXNhbHMiLCAiMzIwNCJdLCBbNDMuMjUwODE4Njc2MzE1ODcsIC0yLjkwNDYzNjE0Njc4MDQ5OTgsICJGZXJuYW5kbyBKaW1cdTAwZTluZXogMTIiLCAiMzIwNSJdLCBbNDMuMjU3NDE4MDc3MzI4OTUsIC0yLjkwNzIwMzI4OTkwOTU4MDMsICJHYWJyaWVsIEFyZXN0aSAvIChBbmJ1bGF0b3Jpb2EpIiwgIjMyMDYiXSwgWzQzLjI2MDM2NzMwNjQyNDEzLCAtMi45MDMzMDQ2NzI4ODM5MTMsICJHYXJhaXphciAoMTYpIiwgIjMyMDgiXSwgWzQzLjI2MTUyMjM4NTE5MjQ2NCwgLTIuOTA0ODI1NDUwODAxNTE1NCwgIkdhcmFpemFyIC8gSWthc3RvbGEiLCAiMzIwOSJdLCBbNDMuMjYwMzkzNjA5NTAwMTEsIC0yLjkwNDY1OTU3MTE4NTcxNCwgIkplc1x1MDBmYXMgR2FsXHUwMGVkbmRleiAvIEFkb3JhdHJpY2VzIiwgIjMyMTAiXSwgWzQzLjI1NzgzMDgzMzM0NDg1LCAtMi45MDk3MDIyMjk4MTM3NTQsICJKZXNcdTAwZmFzIEdhbFx1MDBlZG5kZXogLyBUeG9taW4gR2FyYXQiLCAiMzIxMSJdLCBbNDMuMjYwMzI5MTQ0Njc4NDY1LCAtMi45MDQ3NDcxNDIzMTI3MzIsICJKZXNcdTAwZmFzIEdhbFx1MDBlZG5kZXogMjYiLCAiMzIxMyJdLCBbNDMuMjU4OTA0OTc3Njg2MTMsIC0yLjkwOTA0MTUyNzA4MjI3NiwgIkplc1x1MDBmYXMgR2FsXHUwMGVkbmRleiAzIC8gQ29sZWdpbyBBbGVtXHUwMGUxbiIsICIzMjE0Il0sIFs0My4yNTU1MTAwMjc0NDM5NiwgLTIuOTAwNjQwNzU3NTQ2NjU2LCAiSnVsaVx1MDBlMW4gR2FpYXJyZSAoMzkpIC8gQXJ0YWxhbmRpbyIsICIzMjE1Il0sIFs0My4yNTAzMzY0MTAxNzA3NDYsIC0yLjkwMzY3MTkzMTc0OTI5MDcsICJKdWxpXHUwMGUxbiBHYWlhcnJlICg2KSIsICIzMjE2Il0sIFs0My4yNTA3MjI4MjQ3Mzk2LCAtMi45MDMzMjg2OTc0ODY3ODI3LCAiSnVsaVx1MDBlMW4gR2FpYXJyZSAxMCIsICIzMjE3Il0sIFs0My4yNTMwMjY4NDU0NjQ1NzUsIC0yLjkwMjIxMTg3NjE2NTIxOSwgIkp1bGlcdTAwZTFuIEdhaWFycmUgMjMiLCAiMzIxOCJdLCBbNDMuMjU1MDQyMzY3NTM3ODMsIC0yLjkwMTEyNTg1MzExNDgwODUsICJKdWxpXHUwMGUxbiBHYWlhcnJlIDMzIC8gQXJ0YWxhbmRpbyIsICIzMjE5Il0sIFs0My4yNTI1NjE5MzkyNzc2OSwgLTIuOTAyMzM3MDYzMTA4MTk1MywgIkp1bGlcdTAwZTFuIEdhaWFycmUgMzYiLCAiMzIyMCJdLCBbNDMuMjU1NTY5OTU3MTk2NCwgLTIuOTAwNzc1NTY1NzE0LCAiSnVsaVx1MDBlMW4gR2FpYXJyZSAzOSAvIEFydGFsYW5kaW8iLCAiMzIyMSJdLCBbNDMuMjU3Mzc4OTUzNjk4ODYsIC0yLjg5OTE5MTE4ODYxMTM5MDYsICJKdWxpXHUwMGUxbiBHYWlhcnJlIDYxIiwgIjMyMjIiXSwgWzQzLjI1NTA0NTE2Njg0MzA1NCwgLTIuOTAwOTg3OTg2MzI5MjMyMywgIkp1bGlcdTAwZTFuIEdhaWFycmUgODIiLCAiMzIyMyJdLCBbNDMuMjUzMzYwMDMxNjQ4ODUsIC0yLjkwMzcyMzMzNzMzOTQ4MywgIk9uZGFycm9hIC8gUGFya2VhIiwgIjMyMjQiXSwgWzQzLjI1Njg0MzQ0NzE3NjI5LCAtMi45MDY4MzE4NjAwMjk3NjgyLCAiVHhvbWluIEdhcmF0IDEyIC8gKEFuYnVsYXRvcmlvYSkiLCAiMzIyNSJdLCBbNDMuMjU3MjI5NzE2NTgwNywgLTIuOTA5ODQyMTc1NDI5ODkzNSwgIlR4b21pbiBHYXJhdCA0IiwgIjMyMjYiXSwgWzQzLjI1NjQ2NTczMjU0NzkyLCAtMi45MDQ2OTI2NzUyMTgzMTA0LCAiVHhvbWluIEdhcmF0IDQwIC8gUmVzaWRlbmNpYSIsICIzMjI3Il0sIFs0My4yNTcwMzU1NTM1ODA1OCwgLTIuOTA2ODUyODQ1NDA1NzMxNCwgIlR4b21pbiBHYXJhdCA5IC8gQW5idWxhdG9yaW9hIiwgIjMyMjgiXSwgWzQzLjI1Nzk3NTM2NDczMzQ1NCwgLTIuOTEwOTUxMDg0MDUyNDQ5MywgIlphYmFsYmlkZSAoNjEpIiwgIjMyMjkiXSwgWzQzLjI1Njg1NDkxMTk4MjI4LCAtMi45MTE2NTk1MTY0NDQ5NDEzLCAiWnVtYWxhY1x1MDBlMXJyZWd1aSAvIChNYWt1YSkiLCAiMzIzMCJdLCBbNDMuMjU3ODM4OTA5NjIzNDIsIC0yLjkxNjc4MjMxNTkzNjA3NzcsICJBbWFkZW8gRGVwcml0IC8gRG9sYXJldHhlIiwgIjQxMDEiXSwgWzQzLjI2MDAzNzU3NDQxNzA3LCAtMi45MTcwMTg1MzY3MTcxMzM1LCAiQW1hZGVvIERlcHJpdCAvIFAuQ29ydFx1MDBlOXMiLCAiNDEwMiJdLCBbNDMuMjYwMzA2MzA3NjY1MiwgLTIuOTE2NjY4NTUyMzUwMzE3LCAiQW1hZGVvIERlcHJpdCA4IiwgIjQxMDMiXSwgWzQzLjI1ODk4MTU3MTM1NjcwNiwgLTIuOTEzODY3MDU3NDIzNzQzNywgIkJlZ29cdTAwZjFha28gQmFzaWxpa2EiLCAiNDEwNCJdLCBbNDMuMjU2ODYxMzM4NjY0MDQ1LCAtMi45MTE5OTI5Mzc2NjU5NDA2LCAiTWFrdWEiLCAiNDEwNSJdLCBbNDMuMjU3NTEyNjY0MDI5MDY1LCAtMi45MTM0MDUzMjM4MTQ1NzYsICJNYXN1c3RlZ2kgKDIxKSIsICI0MTA2Il0sIFs0My4yNTcyNTUzNTY4MTg4OSwgLTIuOTEzNjEzOTgwMDM1NDM4NCwgIk1hc3VzdGVnaSAyMSIsICI0MTA3Il0sIFs0My4yNTU5ODM3NzYzNTgzODQsIC0yLjkxMzA5ODI3NjU0NjY4OTcsICJNYXN1c3RlZ2kgMyIsICI0MTA4Il0sIFs0My4yNjA3ODUxNzgzMjU1NSwgLTIuOTE0ODA0NDU0MTk2MDE4MywgIlp1bWFsYWNcdTAwZTFycmVndWkgMzgiLCAiNDEwOSJdLCBbNDMuMjUwNjc1Mjc2MTYyODIsIC0yLjkxMTg0MzAzNjE4NzE5NywgIkFudG9uaW8gRWd1aWx1eiAxOSIsICI0MjAxIl0sIFs0My4yNDk1NTYyMjU5NTA4MSwgLTIuOTA4NDAxNjAwMDE2MDc4LCAiQ2lyY28gQW1hdGV1ciAvIEtpcm9sZGVnaWEiLCAiNDIwMiJdLCBbNDMuMjU0NDU0NjIzMjMzMDksIC0yLjkxMDc1MzUzNzIxMjk3NSwgIkVucmlxdWUgSWJhcnJldGEgMiIsICI0MjAzIl0sIFs0My4yNDk5OTIwNjU1MTM2MywgLTIuOTE3NDc4MjU3MTU3MDY4NSwgIkluZGFsZWNpbyBQcmlldG8gKDEyKSIsICI0MjA0Il0sIFs0My4yNDg4ODQ0NzMwNDk2OCwgLTIuOTE5MzM3MDM0NDkzNTA5NSwgIkluZGFsZWNpbyBQcmlldG8gMSIsICI0MjA1Il0sIFs0My4yNDk5OTQ1MzcyMDUyMiwgLTIuOTE2ODUwMzgwNDA3OTc4LCAiSW5kYWxlY2lvIFByaWV0byAxNiIsICI0MjA2Il0sIFs0My4yNTAzODU0MzIzMDY5NTYsIC0yLjkxMDY2MDUwNjIwMTM3MzMsICJJdHVycmlhZ2EgLyBCYXNhcnJhdGUiLCAiNDIwNyJdLCBbNDMuMjUxNjU4NzQ5Njc1NzIsIC0yLjkxMDU4ODI5MjA0OTU2OTYsICJJdHVycmlhZ2EgNTggLyBMLiBCcmlcdTAwZjFhcyBFc2tvbGEiLCAiNDIwOCJdLCBbNDMuMjU0OTg5NzgwNzkxMTU2LCAtMi45MTE5MzQzNDc3MzA5MDM2LCAiU2FudGEgS2xhcmEgKDEyKSIsICI0MjA5Il0sIFs0My4yNTA5OTk2NTM4Nzk1NywgLTIuOTE0NzIxMzI2NTg0MDkwNiwgIlNhbnR1dHh1ICg0NSkiLCAiNDIxMCJdLCBbNDMuMjUzMTIwNTEzNTU4OTA1LCAtMi45MTU2MTc4NTY4MTkxMjM4LCAiU2FudHV0eHUgMTgiLCAiNDIxMSJdLCBbNDMuMjU0NjIxMDI5ODU4NzU0LCAtMi45MTY5MTMwNDQ3NDI3NDE2LCAiU2FudHV0eHUgMiIsICI0MjEyIl0sIFs0My4yNTE3MTkyNjA2NTA3NiwgLTIuOTE0NjQxOTY4MjMxNjc2LCAiU2FudHV0eHUgNDgiLCAiNDIxMyJdLCBbNDMuMjU1NjU0OTcyNzY5MywgLTIuOTEwODI2MzI2NjU3OTAzNSwgIlp1bWFsYWNcdTAwZTFycmVndWkgNTYiLCAiNDIxNCJdLCBbNDMuMjQ5ODk2MDc1MDU0MzIsIC0yLjkwODYwMzUxMTE5MzkyMSwgIkNpcmNvIEFtYXRldXIgKEtpcm9sZGVnaWEpIiwgIjQzMDIiXSwgWzQzLjI0ODY3MTEzODk1ODU4NSwgLTIuOTA2OTI3ODc1MjMwMDQ0LCAiQ2lyY28gQW1hdGV1ciAvIEJvbHVldGEiLCAiNDMwMyJdLCBbNDMuMjQ4ODMzNDgwODY4ODQ2LCAtMi45MDkzNDcwMjM4NTU0MzM1LCAiQ29jaGVyaXRvIGRlIEJpbGJhbyAxNCIsICI0MzA0Il0sIFs0My4yNDkwMzgyMjc4MzQ1MywgLTIuOTEzNTU5Nzk3OTk4NTY4MywgIlNhZ2FybVx1MDBlZG5hZ2EgMzIgLyBFc2tvbGEiLCAiNDMwNSJdLCBbNDMuMjYwNDExNTY5MTE0ODQ0LCAtMi45MjI5MzYxOTIyNTc1NDA1LCAiQXJlbmFsIC8gKFNhbiBOaWNvbFx1MDBlMXMpIiwgIjUxMDEiXSwgWzQzLjI1OTU2MjQ2MzcxOTE1LCAtMi45MjQwMzc4ODExOTgwMTAzLCAiQXJlbmFsIC8gQXJyaWFnYSIsICI1MTAyIl0sIFs0My4yNjQwOTk1MTM1MDAwMiwgLTIuOTIyNTkwMTEyMDcyNTg3NywgIkVybmVzdG8gRXJrb3Jla2EgOCIsICI1MTAzIl0sIFs0My4yNjE0MTgyNjg1MTc4MTUsIC0yLjkxNTg3MDE2Nzk2NDgyLCAiUFx1MDBlMXJyb2NvIFVnYXogLyBSb3RvbmRhIiwgIjUxMDQiXSwgWzQzLjI1OTc5NTgzMzEyMzI5LCAtMi45MjQwODcyNzkzMTM5NDksICJQdWVudGUgZGVsIEFyZW5hbCIsICI1MTA1Il0sIFs0My4yNTY1OTYzMTQ4MTMzODYsIC0yLjkyNTcwNzkwNDcwOTQ1NDUsICJSaWJlcmEgLyBNZXJrYXR1YSIsICI1MTA2Il0sIFs0My4yNTk4MzA4NjM4NTE0NiwgLTIuOTIyMzEwNjQ2Mjc2MTMzLCAiU2FuIE5pY29sXHUwMGUxcyA0IiwgIjUxMDciXSwgWzQzLjI2Mjg0NTEyMTEyMjEwNSwgLTIuOTIzMDU5MTQzMzk5ODYxNiwgIlNlbmRlamEgKDUpIiwgIjUxMDgiXSwgWzQzLjI1ODE3MjIwNDg3MzY5LCAtMi45MjE1NzI3MjIyNTQwNTcsICJVbmFtdW5vIiwgIjUxMDkiXSwgWzQzLjI2MDQyMDY5NzY0NjE1NCwgLTIuOTIyNzU1MzgyOTA3ODQ1NCwgIlZpdWRhIGRlIEVwYWx6YSAxIC8gU2FuIE5pY29sXHUwMGUxcyIsICI1MTEwIl0sIFs0My4yNjQ3NTAzNzM1NDcwNDUsIC0yLjkxODQxMzg4MDAzNTk5ODQsICJadW1hbGFjXHUwMGUxcnJlZ3VpIC8gKFQuWnViaXJpYSkiLCAiNTExMSJdLCBbNDMuMjU3NzU5NjIyMDMyMDgsIC0yLjkxNjgzNDYzOTMxNTgxMzgsICJBbWFkZW8gRGVwcml0IDEiLCAiNTIwMSJdLCBbNDMuMjU3Njc5NTgxMjAxMTc0LCAtMi45MTg1ODE5NjU5MzI1NDgzLCAiRmlrYSAyIiwgIjUyMDIiXSwgWzQzLjI1NzAwODk5OTAwODE4LCAtMi45MTcxNjE5MjY5MjgwMDQsICJJdHVycmliaWRlIDUzIiwgIjUyMDMiXSwgWzQzLjI1NzU4MDI4ODMyMTQ1NiwgLTIuOTE3NjI4NjA0NTQ4NDI0MywgIlByaW0gMjIgQmlzIiwgIjUyMDQiXSwgWzQzLjI1NjY2OTc2MDU5NjQ2NiwgLTIuOTE2MDE3MjcyOTg5Nzg2NCwgIlByaW0gMzYiLCAiNTIwNSJdLCBbNDMuMjU2MzE4NDUxODY2NDYsIC0yLjkxNDM5OTkwNDc2MjAyNzUsICJQcmltIDUyIiwgIjUyMDYiXSwgWzQzLjI1NzEyODU3Nzg5Nzc0NSwgLTIuOTE0NDQ4NDkwMzc2OTY4LCAiUHJpbSA2MCIsICI1MjA3Il0sIFs0My4yNTcxMDc5Mjc1ODMxNywgLTIuOTE5MjQ1NDI2NDkwODcxLCAiRmlrYSAxOCIsICI1MzAxIl0sIFs0My4yNTYxMTE2NTY4NTMzMTQsIC0yLjkxOTMyNzc0OTQ0NDI0MDQsICJGaWthIDIyIiwgIjUzMDIiXSwgWzQzLjI1Njg5MDQ4NjMwNjMwNCwgLTIuOTE4NDkyNjYxNTEzMzY0LCAiRmlrYSA4IiwgIjUzMDMiXSwgWzQzLjI1NTI2NjI0NDI1MTE3NSwgLTIuOTE5NDA1OTc5NzQwNDQsICJaYWJhbGJpZGUgKDMyKSIsICI1MzA0Il0sIFs0My4yNTQ2NTY0Mjk4MjM4NSwgLTIuOTE0OTUzNTkyMDkwODczLCAiWmFiYWxiaWRlIDQxIiwgIjUzMDUiXSwgWzQzLjI1NTkyMzgxNTAxNTA5NSwgLTIuOTIxNzczOTQwNzM5NDIxLCAiWmFiYWxiaWRlIDciLCAiNTMwNiJdLCBbNDMuMjUzNTcxMTA3NDMwMzI1LCAtMi45MjEzNDgyNDg3MzM5NzMsICJBdHh1cmkgKDE1KSAvIEdlbHRva2lhLUVzdGFjaVx1MDBmM24iLCAiNTQwMSJdLCBbNDMuMjUxNDU4MDg0OTUyMTU1LCAtMi45MjE0NDQ1NzUwNjg2NTUsICJBdHh1cmkgKDQ5KSIsICI1NDAyIl0sIFs0My4yNTM1OTY0NzM2ODg0NzUsIC0yLjkyMTI3NDA4MDE0MTUyOTMsICJBdHh1cmkgMTUiLCAiNTQwMyJdLCBbNDMuMjUxNTMxMzc1Mjc2MSwgLTIuOTIxNDE0NDQ1MjUxNTA2NywgIkF0eHVyaSA0OSIsICI1NDA0Il0sIFs0My4yNTUwMjkyNjI4MjU3NDQsIC0yLjkyMjU1NzcyNDYxNzcyNiwgIkRpZWNpc1x1MDBlOWlzIGRlIEFnb3N0byIsICI1NDA1Il0sIFs0My4yNTQ5Nzk5NDU5NTcyNSwgLTIuOTIyMDk5Nzg5OTA0NjE5LCAiU2FudG9zIEp1YW5lcyA0IiwgIjU0MDYiXSwgWzQzLjI1NTAzMDY1MjEyODcsIC0yLjkyMjAwMTcxOTEzMTA3NjgsICJTYW50b3MgSnVhbmVzIDciLCAiNTQwNyJdLCBbNDMuMjQxOTY0MTgwNzA1NTE2LCAtMi45MjM2MzQ0NDg1Mzc5NzE1LCAiQWJ1c3UgLyBJYmFpYWxkZSIsICI1NTAxIl0sIFs0My4yNDE0Nzc4NjA4MDY4MSwgLTIuOTIxMjcwNDUyNTIwODM0NCwgIkFidXN1IC8gSWJhaWVkZXIiLCAiNTUwMiJdLCBbNDMuMjQzMTI4NTUyNTg5OTUsIC0yLjkyNDkwNzY1NjA3MzQzOCwgIkFidXN1IC8gSWJhaXphYmFsIiwgIjU1MDMiXSwgWzQzLjIzMjc4MzM2MTYwNzI4LCAtMi45MTQ0NjY5NzI2MDA4OTQ1LCAiQnVpYSAvIChCb2xpbnR4dWJpZGVhKSIsICI1NTA0Il0sIFs0My4yMzI2NDkyNDA5MTQ2NzUsIC0yLjkxNDUzMzgxMzU2MjY0MTcsICJCdWlhIC8gQm9saW50eHViaWRlYSIsICI1NTA1Il0sIFs0My4yMjYzNzA5ODgyNTQ1MSwgLTIuOTEzOTUyNDgyODA1MjA0NCwgIkJ1aWEgQXV6b2EgKDE1MykiLCAiNTUwNiJdLCBbNDMuMjI2NDE3NjEzNTIyMjE2LCAtMi45MTM5MTEzNjcyNzAyNzY2LCAiQnVpYSBBdXpvYSAxNTMiLCAiNTUwNyJdLCBbNDMuMjI3MTM0ODcxMzIzNDUsIC0yLjkxNjgzMzg2NTE2ODI0MSwgIkJ1aWEgQmVrb2EiLCAiNTUwOCJdLCBbNDMuMjQxOTYzMjE0Nzg5MzQ0LCAtMi45MzQ2NDIzNzU5MjQxOTM3LCAiTGFycmFza2l0dWJpZGVhIC8gKEVzdHJhZGEgQmVpdGkpIiwgIjU1MDkiXSwgWzQzLjI0MjkyNjkwNTk5MjQwNSwgLTIuOTM3OTYwNDE5ODY1NTI2MywgIkxhcnJhc2tpdHViaWRlYSA4MSIsICI1NTEwIl0sIFs0My4yMzk0Mzk1ODc2NDM1NywgLTIuOTE4MTMzMDYzODY2OTI2NSwgIk9sbGFyZ2FuIiwgIjU1MTEiXSwgWzQzLjI0MzMzNTc5NDYzOTk3LCAtMi45MzE3NjAwOTQxMjQ3MDEsICJTYW4gQWRyaVx1MDBlMW4gKDQ4KSAvIElydXN0YWJpZGVhIiwgIjU1MTIiXSwgWzQzLjI0OTAyMjM3MjYxNzU5NiwgLTIuOTIxNDQyMjM1MTY0NjU2NSwgIlVyYXp1cnJ1dGlhIiwgIjU1MTMiXSwgWzQzLjI0NDg3MTg5MjAxMTg3LCAtMi45MjQyODMwNzUwMTI2NzUsICJaYW1cdTAwZTFjb2xhICg4NCkiLCAiNTUxNCJdLCBbNDMuMjQ0ODQxNzY1NjQ0MTcsIC0yLjkyNDk0MTk2NzMxMjMwMjcsICJaYW1cdTAwZTFjb2xhIC8gRXNrb2xhIiwgIjU1MTUiXSwgWzQzLjI0MjQ0OTcxNjE5NTYyLCAtMi45MjU1OTU3NjUyMDIwNzM3LCAiWmFtXHUwMGUxY29sYSAxMTYiLCAiNTUxNiJdLCBbNDMuMjQxMjM0NTUxOTEyMzIsIC0yLjkyMzUxNzg0NzMyNjUxNzgsICJaYW1cdTAwZTFjb2xhIDE1MCAvIEVsaXphIiwgIjU1MTciXSwgWzQzLjI0MDk3NzM1MTUyOTI5NSwgLTIuOTIxNDY0MzAxNDk4ODc0NiwgIlphbVx1MDBlMWNvbGEgMTY4IiwgIjU1MTgiXSwgWzQzLjI0OTUzMjkzODk2ODM4LCAtMi45MjE4NDQyMzIwNjM2Nzg2LCAiWmFtXHUwMGUxY29sYSAyNiIsICI1NTE5Il0sIFs0My4yNTEwMzQ1NTE2MTk0NywgLTIuOTIyODg5ODAwMzcyNDUxNSwgIlphbVx1MDBlMWNvbGEgNCIsICI1NTIwIl0sIFs0My4yNDYxMDA1MTM4OTA3NSwgLTIuOTIxNzEzNzM3Nzg2ODA0LCAiWmFtXHUwMGUxY29sYSA0NSIsICI1NTIxIl0sIFs0My4yNDU3MTk5OTY3MzM4NTQsIC0yLjkyMjUyOTQzNzYzMjYwNjUsICJaYW1cdTAwZTFjb2xhIDcwIiwgIjU1MjIiXSwgWzQzLjI1NDA4ODQ3OTQyNDEwNSwgLTIuOTI1MDgwMzY4ODQwODcwNiwgIk9sYW5vICg0KSIsICI1NjAxIl0sIFs0My4yNTQwMjYwODY0NTY0NiwgLTIuOTIzMTczNDMyODk2NDA2NSwgIlVyYXp1cnJ1dGlhIDEgLyBTYWxhIEN1bmEiLCAiNTYwMiJdLCBbNDMuMjUzNzI4OTMxMzY1MzQ1LCAtMi45MjMwNzkxNTk5ODg2NTY1LCAiVXJhenVycnV0aWEgMTQiLCAiNTYwMyJdLCBbNDMuMjUyMzQzNDAzMDUzMzMsIC0yLjkyMzA3OTM4ODU1MDc5NCwgIlVyYXp1cnJ1dGlhIDQwIiwgIjU2MDQiXSwgWzQzLjI1NDc3MzA3Nzc1MTUyLCAtMi45MjY3NDM4OTQzNDMwNzQ0LCAiQ29ydGVzICgyKSIsICI1NzAxIl0sIFs0My4yNTUzNTA4MjgwMjMwMywgLTIuOTI4MzQyNDUzNDE2NTY0LCAiQ29ydGVzIDEzIiwgIjU3MDIiXSwgWzQzLjI1NjAzNTkyMjM4NDgyNSwgLTIuOTMwMjQ4Mzg0OTgyNDkxNCwgIkNvcnRlcyAyMyIsICI1NzAzIl0sIFs0My4yNTcwOTAzNDI1MzMwNzUsIC0yLjkyNzEyOTI5NTA3NzkyMzcsICJNdWVsbGUgZGUgbGEgTWVyY2VkIDMiLCAiNTcwNCJdLCBbNDMuMjU2NTEwMzAxOTM2MDQ2LCAtMi45MzE3NTg2MDQ1NTkxOTcsICJEci4gRmxlbWluZyAxIiwgIjU4MDEiXSwgWzQzLjI1NDg3Nzk0MzU5MjQ5LCAtMi45MzM0MDM5ODM2MTU1NzU0LCAiSnVhbiBkZSBHYXJheSAxMSIsICI1ODAyIl0sIFs0My4yNTI2OTM2Nzk2MTI2OCwgLTIuOTM0Mjg1NzQyMTUwODc5NSwgIkp1YW4gZGUgR2FyYXkgMzMiLCAiNTgwMyJdLCBbNDMuMjUwNjMxMDc2MjU2NTA0LCAtMi45MzM2NzY1NjYzNjEyNzIsICJSb3RvbmRhIEp1YW4gZGUgR2FyYXkiLCAiNTgwNCJdLCBbNDMuMjUyNzg2MjQwNjg5NTQ1LCAtMi45MzI1NTcwMDQ5NjE4OTY4LCAiWGVucGVsYXIgLyBaYWJhbGEiLCAiNTgwNSJdLCBbNDMuMjU0MzI5OTU1ODEzOTMsIC0yLjkzMjA4MzY1ODcyNTU0OTcsICJaYWJhbGEgMjIiLCAiNTgwNiJdLCBbNDMuMjUyMzQ4MzYwNDI2NjQsIC0yLjkzMDc1OTE4OTMzNzA1MzMsICJHZXJuaWthIDEiLCAiNTkwMSJdLCBbNDMuMjUwNTMxMTMzNTY4NTY1LCAtMi45Mjk5MDUwNDQ3OTk4NDk0LCAiR2VybmlrYSAxMCIsICI1OTAyIl0sIFs0My4yNTEyMTY4MzUyMzc3MDYsIC0yLjkyOTI2MzUzNzkwMDUxNTQsICJHZXJuaWthIDExIiwgIjU5MDMiXSwgWzQzLjI0OTQxNzYxMDI3MDg4LCAtMi45MjY4OTg4OTcwNTUzMTA1LCAiR2VybmlrYSAyMyIsICI1OTA0Il0sIFs0My4yNDkzNTQ4NTU0ODQxMzUsIC0yLjkyNzkwNzUzNDA0MTAzNjUsICJHZXJuaWthIDI0IiwgIjU5MDUiXSwgWzQzLjI0NzY2MDI0NTY1NTg0NCwgLTIuOTMxNjE5MTMzMTE1MTU3LCAiR29pa28gVG9ycmUgMTIiLCAiNTkwNiJdLCBbNDMuMjQ4NzUyNTM2NTc5NDcsIC0yLjkyODA1ODQzMTUwOTkxOCwgIkp1bGlcdTAwZTFuIFp1Z2F6YWdvaXRpYSAxMyIsICI1OTA3Il0sIFs0My4yNDY4OTA4ODgzNzI3NzUsIC0yLjkyOTc1NDUxMzkxNzgzODUsICJMYSBGbG9yZXN0YSIsICI1OTA4Il0sIFs0My4yNDg1NDYxNDMxNDk2LCAtMi45Mjk5NTQwODkzOTcxODE2LCAiTWFydFx1MDBlZG4gQmFydWEgKDI0KSIsICI1OTA5Il0sIFs0My4yNDkzNjgwODk2NzM3MTYsIC0yLjkzMTU1MzM4NjEwNjk4NTYsICJNYXJ0XHUwMGVkbiBCYXJ1YSAxNyAvIEluc3RpdHV0b2EiLCAiNTkxMCJdLCBbNDMuMjQ2OTI3NDg4NDAwNjIsIC0yLjkzMjU0MjAzNTAwNjY1MDcsICJTYW4gQWRyaVx1MDBlMW4gKDMzKSIsICI1OTExIl0sIFs0My4yNDg0OTc5NzYzNDAwNTUsIC0yLjkzMzEzNTc2NTM4NjU4OTMsICJTYW4gQWRyaVx1MDBlMW4gMTciLCAiNTkxMiJdLCBbNDMuMjQ5NjM5ODk5ODIyMDcsIC0yLjkzMzc2MTg1NDc0OTE3OSwgIlNhbiBBZHJpXHUwMGUxbiAyIiwgIjU5MTMiXSwgWzQzLjI0ODMwNDM3NTc3NDYxNiwgLTIuOTMzMjA1Nzc1MDM0NDUzNiwgIlNhbiBBZHJpXHUwMGUxbiAzNiIsICI1OTE0Il0sIFs0My4yNDY5NDg0OTM1NTQ3NzUsIC0yLjkzMjQyODI2NTE3NjcwMzUsICJTYW4gQWRyaVx1MDBlMW4gMzMiLCAiNTkxNSJdLCBbNDMuMjUyNzIzNjIxMTk4NDcsIC0yLjkzMjYyNDk2MDgwOTMzMywgIlhlbnBlbGFyIC8gVHJhdi5aYWJhbGEiLCAiNTkxNiJdLCBbNDMuMjY2NjkxMjk5MTA1NjIsIC0yLjkzMzMzOTk3MzkzMDE2ODcsICJBbGRhIFJlY2FsZGUgMTEiLCAiNjEwMSJdLCBbNDMuMjY2MDg0OTA3NjE1OTIsIC0yLjkzMzcwNTgzNDYwNzY2NjMsICJBbGRhIFJlY2FsZGUgMTIiLCAiNjEwMiJdLCBbNDMuMjYzNjI5NjMxODM5MDMsIC0yLjkzNDU4Njg5MDE2MTIzOSwgIkFsZGEgUmVjYWxkZSAzMSIsICI2MTAzIl0sIFs0My4yNTc3MTI4MzIyNzY2MywgLTIuOTM1MDUwMDk2NTk0Mjk0NywgIkFsZGEgU2FuIE1hbVx1MDBlOXMgOCIsICI2MTA0Il0sIFs0My4yNTczNTA3NTEzODM4NDYsIC0yLjkzNTMxMzY2MDA0MjcxNTQsICJBdXRvbm9tXHUwMGVkYSA0IiwgIjYxMDYiXSwgWzQzLjI2NzgxMTk1Nzg0NjcyLCAtMi45Mzk3Mjk0OTkyODk3MDMsICJEZXVzdHVrbyBadWJpYSAvIFp1YmlhcnRlIiwgIjYxMDciXSwgWzQzLjI2MjMyNTEyNzQwNzQsIC0yLjkzNDU5OTY4OTE5OTYyMjcsICJFbGNhbm8gKDkpIiwgIjYxMDgiXSwgWzQzLjI2NTQ3NzQ2ODUwMTg2NCwgLTIuOTM2ODAwMDA5OTU1NDg0MywgIkVsY2FubyAyIiwgIjYxMDkiXSwgWzQzLjI2MzkzMDk5MDg3ODMzNiwgLTIuOTM1NTU2OTM2NTU1NTEzLCAiRWxjYW5vIDMiLCAiNjExMCJdLCBbNDMuMjYxMjE5NjU4NzUsIC0yLjkzNDEwMTI4NTk0MDU2LCAiR3JhbC4gQ29uY2hhIDIgLyBQLkVndWlsbG9yIiwgIjYxMTEiXSwgWzQzLjI1ODE4Mjk2MDU1MDM2NCwgLTIuOTM1MzQ3NzQ4NjQzMjk5NSwgIkdyYWwuIENvbmNoYSAyNiIsICI2MTEyIl0sIFs0My4yNjE1Mjk5NDY0MDAxNzQsIC0yLjkyODQ3NjU4MDg4NDY1MTMsICJHcmFuIFZcdTAwZWRhIDciLCAiNjExMyJdLCBbNDMuMjYyNzA5ODY3MzkwOTcsIC0yLjkzMzQ1NzIzODcwMjE1NzQsICJHcmFuIFZcdTAwZWRhIDM2IiwgIjYxMTQiXSwgWzQzLjI2MjY5MDc2MTk3NzAzLCAtMi45MzM3NTA5OTY0MzE1NTksICJHcmFuIFZcdTAwZWRhIDM3IiwgIjYxMTUiXSwgWzQzLjI2MzI4OTcyNTMzOTU1LCAtMi45MzU5ODcyNzQzNDczODM0LCAiR3JhbiBWXHUwMGVkYSA0MCIsICI2MTE2Il0sIFs0My4yNjE3MzI1ODgyNjEyOCwgLTIuOTI4OTY3MDQxMzg1NjQ4MywgIkdyYW4gVlx1MDBlZGEgOCIsICI2MTE3Il0sIFs0My4yNjA2MzY2MDI1NDc4MiwgLTIuOTI3OTk4NzIwNjE2NzYsICJIdXJ0YWRvIEFtXHUwMGU5emFnYSAxIC8gR2VsdG9raWEtRXN0YWNpXHUwMGYzbiIsICI2MTE4Il0sIFs0My4yNjA4NDkxNDE1NjY4LCAtMi45Mjc5MTY4MjUzNDAzMjE2LCAiSHVydGFkbyBBbVx1MDBlOXphZ2EgMiAvIChHZWx0b2tpYS1Fc3RhY2lcdTAwZjNuKSIsICI2MTE5Il0sIFs0My4yNTc5MTQ2MjE2NTU3OCwgLTIuOTMyODIyMjYyMjg4MDkxLCAiSHVydGFkbyBBbVx1MDBlOXphZ2EgMTUiLCAiNjEyMCJdLCBbNDMuMjU3NTkyOTMwMTE2NzIsIC0yLjkzMzUzNDI5MDA2MDQ0MTMsICJIdXJ0YWRvIEFtXHUwMGU5emFnYSA1MCIsICI2MTIxIl0sIFs0My4yNjMwNjEzNjY1NzkwNjYsIC0yLjkyNzQ1MjExMDk4MzI2NTQsICJJYlx1MDBlMVx1MDBmMWV6IGRlIEJpbGJhbyAxNCIsICI2MTIyIl0sIFs0My4yNTYzNDM4Mjg1NTk3OSwgLTIuOTMzMjE1MTcyNTM4NzkzLCAiSnVhbiBkZSBHYXJheSA3IiwgIjYxMjMiXSwgWzQzLjI2MjYwMjIzNjUwNjU5NSwgLTIuOTI5MjY5Mzk2MjMwNTg4NSwgIk1hemFycmVkbyAzIiwgIjYxMjQiXSwgWzQzLjI2NTg2NDczNjE3MzgzLCAtMi45MzY5ODIyMDg0NjgzMjE3LCAiTXVzZW8gMSAvIEhlbmFvIiwgIjYxMjUiXSwgWzQzLjI2MTQ0ODE2ODIwNTc5LCAtMi45MjcxOTAxNzQ2MzQ4Njg3LCAiUGxhemEgQmlyaWJpbGEgLyBHcmFuIFZcdTAwZWRhIiwgIjYxMjYiXSwgWzQzLjI1OTc5NjQ4MjQxMjI4NCwgLTIuOTMyNTA4MjE2MTE4MjQxLCAiVXJxdWlqbyAxNCAvIEluc3RpdHV0b2EiLCAiNjEyOCJdLCBbNDMuMjU5MTE4ODE2MDc5MjgsIC0yLjkzNzUwNjQyMjY5NTM4MTMsICJBbGRhIFNhbiBNYW1cdTAwZTlzICgzMykiLCAiNjIwMSJdLCBbNDMuMjU3NDgyMTI0MTMxMiwgLTIuOTM3ODU5MTEzMDc5MjI1LCAiQXV0b25vbVx1MDBlZGEgMjIiLCAiNjIwMiJdLCBbNDMuMjU3NzE4NjQwNDQyNCwgLTIuOTQyNzM4MDAyMzI2OTk0NSwgIkF1dG9ub21cdTAwZWRhIDUwIiwgIjYyMDMiXSwgWzQzLjI2NzU3NjMyMTU2ODE4NSwgLTIuOTM5MzcwMDU2NjIwNDU2LCAiRGV1c3R1a28gWnViaWEiLCAiNjIwNCJdLCBbNDMuMjYzMTY5MTIzNzgwMjgsIC0yLjkzNjA1MjAxMjUwNTkzODYsICJHcmFuIFZcdTAwZWRhIDQxIiwgIjYyMDUiXSwgWzQzLjI2MzM0ODAxMTU0Mjc0LCAtMi45MzY4NjkyNzEwMzAyNjM3LCAiR3JhbiBWXHUwMGVkYSA0MyIsICI2MjA2Il0sIFs0My4yNjQyMTM1ODUxMzQ5MywgLTIuOTQwMTk4OTQ2ODMyNDY0NSwgIkdyYW4gVlx1MDBlZGEgNjIiLCAiNjIwNyJdLCBbNDMuMjY0MTQ3NDY5MTg4Nzg1LCAtMi45NDA1MTk1NDA0ODE0NjcsICJHcmFuIFZcdTAwZWRhIDYzIiwgIjYyMDgiXSwgWzQzLjI2MzY0NDYyMjM5OTU0NiwgLTIuOTM5Mjg2MjQ1ODEyNDEwNSwgIkdyZWdvcmlvIGxhIFJldmlsbGEgMiIsICI2MjExIl0sIFs0My4yNjExNzEyMTI1NDMxMywgLTIuOTQwMjcxOTczOTg4NDg2NCwgIkdyZWdvcmlvIGxhIFJldmlsbGEgMjIiLCAiNjIxMiJdLCBbNDMuMjU4NjAzODU4MDI5MDMsIC0yLjk0MTI1MjE2MjEwMzE0NTYsICJHcmVnb3JpbyBsYSBSZXZpbGxhIDM1IiwgIjYyMTMiXSwgWzQzLjI1ODM1ODk1MTY3NjA0NCwgLTIuOTQxNDExMzc4Nzc1NjMxNywgIkdyZWdvcmlvIGxhIFJldmlsbGEgMzYiLCAiNjIxNCJdLCBbNDMuMjYwNjQwOTAyNzk5NTUsIC0yLjkzNzM5NDY3NDYzNzU1NjgsICJJcGFycmFndWlycmUgKDQyKSAvIEJpemthaWEgcGwuIiwgIjYyMTUiXSwgWzQzLjI2MjgwNDUxNTc2NzgxLCAtMi45MzY0OTE5NTY1MDk3NDIzLCAiSXBhcnJhZ3VpcnJlIDI5IiwgIjYyMTYiXSwgWzQzLjI2Mjg4MzI5NDE5Nzk3LCAtMi45MzU2Mzc1MTczMDA5NjksICJNb3lcdTAwZmFhIDQiLCAiNjIxOSJdLCBbNDMuMjYxMzUzMTg3MzQ1MTE1LCAtMi45NDE5OTk4NTk4NTI3ODUsICJVcnF1aWpvIDY4IiwgIjYyMjEiXSwgWzQzLjI2MjE1MzEwMzkyNTA5NCwgLTIuOTQ1NjQ5MDM3NDYyNDkxNywgIlVycXVpam8gOTIiLCAiNjIyMiJdLCBbNDMuMjU5OTE3NjEyMTI3MzUsIC0yLjk0MDA3ODU1NDQ4MjQ1NDQsICJVcnJ1dGlhIDEiLCAiNjIyMyJdLCBbNDMuMjY0Nzk3Nzg4MDE5NTEsIC0yLjk0Mjg3NDgzOTU4NzI2NywgIkdyYW4gVlx1MDBlZGEgNzQgLyBCYXN0ZXJyYSIsICI2MjI0Il0sIFs0My4yNjAyODQzNjkxOTY0MDUsIC0yLjkzNzA4MzA4NjU0OTUyMTcsICJVcnF1aWpvIC8gQml6a2FpYSBwbC4iLCAiNjIyNiJdLCBbNDMuMjU4Mjg3NDE1MDU1OTgsIC0yLjk0NTY0NDY1NDk0MDEzMjUsICJNYXJcdTAwZWRhIERcdTAwZWRheiBkZSBIYXJvICg1NykiLCAiNjIyOCJdLCBbNDMuMjU4MDY0NDUwNDMwNTI0LCAtMi45Mzg1MjcyNjY5OTMwMDA3LCAiSXBhcnJhZ3VpcnJlIDYzIiwgIjYyMjkiXSwgWzQzLjI1NDQwNjc4NzY1MzUsIC0yLjk0MzQ2NjkyMzc0NTYxLCAiQW1ldHpvbGEiLCAiNzEwMSJdLCBbNDMuMjU3MjIyNzQ0OTUyNTEsIC0yLjkzNTMwMzUyNjE3MDQ4OCwgIkF1dG9ub21cdTAwZWRhIDEiLCAiNzEwMiJdLCBbNDMuMjU3MzMyMjU0MjA0NiwgLTIuOTM3NjEwNTQ4Mzk3MTUxLCAiQXV0b25vbVx1MDBlZGEgMTMiLCAiNzEwMyJdLCBbNDMuMjU3NTg3NTM3NzA0MTA0LCAtMi45NDI1MjM4NTg2Nzg0MzUsICJBdXRvbm9tXHUwMGVkYSA0MyIsICI3MTA0Il0sIFs0My4yNTcyNzU0MTUxMjQ2OCwgLTIuOTQxNzI4OTUzNjU4ODg1LCAiR29yZG9uaXogMjIiLCAiNzEwNiJdLCBbNDMuMjU2NjQ3MzE1NjAxNTUsIC0yLjk0MjI2NTEyMjMyMTI3MDQsICJHb3Jkb25peiAzOSIsICI3MTA3Il0sIFs0My4yNTY4NDA2MzA2MzUxNDYsIC0yLjkzNDk4NDcxNTg0Nzc1ODQsICJQZWRybyBNYXJ0XHUwMGVkbmV6IEFydG9sYSAyIiwgIjcxMDgiXSwgWzQzLjI1MTQ3NTk3NjAyMTgyLCAtMi45MzU3MzcwMDg1NzAxMDg3LCAiQmVyZ2FyYSAoMTIpIiwgIjcyMDEiXSwgWzQzLjI1NDkwNTA4NzY3NTUzLCAtMi45MzYyODUxNzI5NjY3NzIsICJJcmFsYSAoMTkpIiwgIjcyMDMiXSwgWzQzLjI1MjAxNjEyODQ1NTg2LCAtMi45Mzc2MTY0NjAyODY1OTQsICJJcmFsYSAoNTMpIC8gRXNrdXJ0emUiLCAiNzIwNCJdLCBbNDMuMjUzMjczMjQ1NDcwMjQsIC0yLjkzNzU1NzQzNTg4NzAxNjIsICJJcmFsYSAyOCIsICI3MjA1Il0sIFs0My4yNTEyNzk3OTgzNjMxOSwgLTIuOTM0NjkzNjM2MTY3MzkyMywgIkp1YW4gZGUgR2FyYXkgLyBHaVx1MDBmMWEgRXN0cmF0YSIsICI3MjA2Il0sIFs0My4yNTM4NDk3MjMwNTU3NSwgLTIuOTM0MDI3ODk0MDQwNTAwNywgIkp1YW4gZGUgR2FyYXkgLyBHb2IuTWlsaXRhcnJhIiwgIjcyMDciXSwgWzQzLjI1MzEyOTgyNDc0MDM5LCAtMi45MzU0ODQ0NjYxMjY4OTQ2LCAiTW9uYXN0ZXJpbyA1IiwgIjcyMDgiXSwgWzQzLjI1MDgxNDQ4NTQzNTk2LCAtMi45MzU3NDYzNjUxNTEwODgsICJSb3RvbmRhIEVza3VydHplIiwgIjcyMDkiXSwgWzQzLjI1NDU3NDE5NDMxNzExNSwgLTIuOTM0NTc2NDMzNzA2NzQxLCAiVXJpemFyIDI0IC8gR29iLk1pbGl0YXJyYSIsICI3MjEwIl0sIFs0My4yNDY0NDE4NTQ4MjE4OSwgLTIuOTQyMDczMjQwNTA5OTE5NywgIkFydGF6dWdvaWtvYSIsICI3MzAxIl0sIFs0My4yNTI1Mjc3MTIwMzgyMSwgLTIuOTQ1MDc0MjAxNjI3MDA3LCAiQmVuaXRvIEFsYmVyZGkgKDYpIiwgIjczMDIiXSwgWzQzLjI1MTYwODgyMTI4ODUyLCAtMi45NDc1ODg0MzMzNzU1MDA1LCAiQ2FtaWxvIFZpbGxhYmFzbyAoMjcpIiwgIjczMDMiXSwgWzQzLjI1MjU1MDY5OTE4MzksIC0yLjk0NTU1MzA4Nzg1NjM3MiwgIkNpdWRhZGVsYSAxIiwgIjczMDQiXSwgWzQzLjI1MjIwNDIxMTg0NzAxLCAtMi45NDUwMDQ3MzQ4Njg2OTg3LCAiQ2l1ZGFkZWxhIDJBIiwgIjczMDUiXSwgWzQzLjI1MTc5MTY0ODE4MTM3NCwgLTIuOTQ0MDA4MDIyOTU0MzIyLCAiRXJyZWthbGRlLUxhcnJhc2tpdHUgMSIsICI3MzA2Il0sIFs0My4yNTA5NDU2NzM5MDQ2NzQsIC0yLjk0MjE1OTIzMDk0Mjg1OTIsICJFcnJla2FsZGUtTGFycmFza2l0dSAyMyIsICI3MzA3Il0sIFs0My4yNTIyNTY2NDM2ODY3NiwgLTIuOTQ2MTgzMzMxODg1Nzg5LCAiR29yZG9uaXogKDU0KSAvIFB6YSBFcnJla2FsZGUiLCAiNzMwOCJdLCBbNDMuMjQ5NDE2OTc4MDE4NDk1LCAtMi45NDY2MTE2NDM0MTI2OTA2LCAiR29yZG9uaXogKDkwKSIsICI3MzA5Il0sIFs0My4yNTQzNjQwMTI5NTkwNSwgLTIuOTQ0NzE4NTAxNTg4MTExNCwgIkdvcmRvbml6IDM2IiwgIjczMTAiXSwgWzQzLjI1NDMzMDgzMDMzNzQsIC0yLjk0NDU5NDM5OTk0MTc1ODMsICJHb3Jkb25peiA0OUEiLCAiNzMxMSJdLCBbNDMuMjUyNDY2MzE1NDc5NjIsIC0yLjk0NjI0NzYwMjUzOTgwMSwgIkdvcmRvbml6IDU0IC8gKFB6YSBFcnJla2FsZGUpIiwgIjczMTIiXSwgWzQzLjI0OTQyMzQxOTc4NDYxLCAtMi45NDY5ODY3NjQ3ODI3MDc3LCAiR29yZG9uaXogOTAiLCAiNzMxMyJdLCBbNDMuMjUyODg5NTM1NzQzOTU0LCAtMi45NDY0Nzk4MDQyMDM1NDY1LCAiR295YSA3IiwgIjczMTQiXSwgWzQzLjI1MjgwMjczODA4NjU1LCAtMi45NDMxNzgyMTE1NTU5NDI2LCAiSmFlbiA3IiwgIjczMTYiXSwgWzQzLjI0NjY4NDI0NzU5MDA3NSwgLTIuOTQxNjQ3Mzc5Mzc3MDMzLCAiQXJ0YXp1Z29pa29hIC8gRXNrb2xhIiwgIjczMjAiXSwgWzQzLjI0NjE3NjUxOTk2NTIzLCAtMi45NDA5NjYzNjg2NzIxMDIsICJLYXJpdGF0ZWtvIEFsYWJlbiAzIiwgIjczMjIiXSwgWzQzLjI0NjUzODQ5MTIzMDc5NCwgLTIuOTQxMDM3OTU5NjcxMjM4NiwgIkthcml0YXRla28gQWxhYmVuICgzKSIsICI3MzIzIl0sIFs0My4yNDk2ODUzMzc3OTQ5MzYsIC0yLjk0MTk2NzYxNDMzODU2NjIsICJBcnRhenViZWtvYSIsICI3NDAxIl0sIFs0My4yNTA1ODE1MzA4ODc3MzYsIC0yLjk0MjMwNzc3ODE5OTYzNjMsICJBcnRhenViZWtvYSAoMTApIiwgIjc0MDIiXSwgWzQzLjI1MDA0NzA0NjMwNDE0LCAtMi45NDE4Nzc3NzA2NzczNCwgIkFydGF6dWJla29hIDI3IiwgIjc0MDMiXSwgWzQzLjI0ODkzODgzMzI0NjM1NiwgLTIuOTM5ODMxNDYxNTI4OTAxNiwgIkVycmVrYWxkZS1MYXJyYXNraXR1ICgzNikiLCAiNzQwNCJdLCBbNDMuMjQ0OTI4MTc4NzgyNTYsIC0yLjkzMzc0MzIxNTIyMDA2MSwgIkVycmVrYWxkZS1MYXJyYXNraXR1IC8gKEliZXJkcm9sYSkiLCAiNzQwNSJdLCBbNDMuMjQ1NjM2NzkzNTE1MDMsIC0yLjkzNzE0MDkwOTU4NjA0MSwgIkVycmVrYWxkZS1MYXJyYXNraXR1IC8gKEtpcm9sZGVnaWEpIiwgIjc0MDYiXSwgWzQzLjI0NDg4NTk0NzM1ODQ5LCAtMi45MzM1MjI4MTE0NjU2OTM3LCAiRXJyZWthbGRlLUxhcnJhc2tpdHUgLyBJYmVyZHJvbGEiLCAiNzQwNyJdLCBbNDMuMjQ1OTI3MDAwMjIxMTQsIC0yLjkzODA3NzA4NzA3MjQwNjQsICJFcnJla2FsZGUtTGFycmFza2l0dSAvIEtpcm9sZGVnaWEiLCAiNzQwOCJdLCBbNDMuMjUwODU1NDUzNTU0NjE0LCAtMi45NDIxNzMzMjQ0MzM1OTU1LCAiRXJyZWthbGRlLUxhcnJhc2tpdHUgMTQiLCAiNzQwOSJdLCBbNDMuMjUxNDU0NDUwMzkyMDI1LCAtMi45NDM0NjUxNzc4OTc5MjYsICJFcnJla2FsZGUtTGFycmFza2l0dSAyIiwgIjc0MTAiXSwgWzQzLjI0ODkwODk5MDcwMzE0LCAtMi45Mzk5MjI2NzIwMzMyOTIzLCAiRXJyZWthbGRlLUxhcnJhc2tpdHUgMzYiLCAiNzQxMSJdLCBbNDMuMjQxOTQ3Mzc3NjIzMDQsIC0yLjkzNDQwMjcwNDUxMzAxMTQsICJMYXJyYXNraXR1YmlkZWEgLyBFc3RyYWRhIEJlaXRpIiwgIjc0MTIiXSwgWzQzLjI0Mjg1ODY3OTg3Mjc5NiwgLTIuOTM2NzQ1MDU1MjM4MzE2NywgIkxhcnJhc2tpdHViaWRlYSA4OCIsICI3NDEzIl0sIFs0My4yNDIxOTM5OTc3MzYwMiwgLTIuOTQwMzQ5OTkxOTM2MjQzMiwgIkxhcnJhc2tpdHViaWRlYSA5OCIsICI3NDE0Il0sIFs0My4yNDI4NDk4MDg0MTUzLCAtMi45MzIwODc1NjY5NzEwNjkzLCAiU2FuIEFkcmlcdTAwZTFuIDQ4IiwgIjc0MTUiXSwgWzQzLjI0NTE4MDk1OTc1NjU5NSwgLTIuOTM4NTYxMjA1NzQ5OTczLCAiS2FyaXRhdGVrbyBBbGFiZW4gNDgiLCAiNzQxNiJdLCBbNDMuMjQ1MjExMzE1OTYzMiwgLTIuOTM4MjgyNzY1MDE2MTgxNiwgIkthcml0YXRla28gQWxhYmVuICg0NikiLCAiNzQxNyJdLCBbNDMuMjUxODg4OTY2NzQyOTc1LCAtMi45NDg5MTE1NDYzNzM5MTU3LCAiQWx0dWJlIDEyIiwgIjc1MDEiXSwgWzQzLjI0OTA3NjkxNzM3MTY3NCwgLTIuOTUwMjcwMjg0NDc5MzY4LCAiQmV0b2xhdHphIDQxIiwgIjc1MDIiXSwgWzQzLjI0Nzk3NTc3NDU1OTM2NCwgLTIuOTUwNjQ0MDkzMDc1MzIzNSwgIkJldG9sYXR6YSA1MSIsICI3NTAzIl0sIFs0My4yNTEyMTk5ODQ4MTE0NywgLTIuOTQ4ODc2NzIwNDc2NTczLCAiQ2lyY3VudmFsYWNpXHUwMGYzbiAxIiwgIjc1MDgiXSwgWzQzLjI0OTgxODk0NzUyOTc1NCwgLTIuOTQ5NDk0MDU3OTU4ODkxNSwgIkNpcmN1bnZhbGFjaVx1MDBmM24gMTIiLCAiNzUwOSJdLCBbNDMuMjQ4NjUzODQzOTA5NjQsIC0yLjk0OTMwMjMxMjI5NDk3MTUsICJVcmV0YW1lbmRpIC8gUGxhemEiLCAiNzUxMCJdLCBbNDMuMjQ1ODI1ODcxNTc5NDIsIC0yLjk0ODY5MjY4MzUwODg2NCwgIkl0dXJyaWdvcnJpYmlkZWEgKDQ1KSIsICI3NjAxIl0sIFs0My4yNDY5MzEyMDM2MTUxNiwgLTIuOTQ4MjYzOTE5NDc0MjA0NiwgIkl0dXJyaWdvcnJpYmlkZWEgMzciLCAiNzYwMiJdLCBbNDMuMjQzMTk5NjIxNzAxMzY1LCAtMi45NDkwODQ5MTA5ODI4ODAzLCAiUGVcdTAwZjFhc2NhbCAoMTYpIC8gRWxpemEiLCAiNzYwMyJdLCBbNDMuMjQwMTE0NzA1NTIzOTksIC0yLjk0OTczMzA3NzA1NDc5NSwgIlBlXHUwMGYxYXNjYWwgKDI5KSIsICI3NjA0Il0sIFs0My4yNDM0MzQ1NjUwOTQ5MiwgLTIuOTQ5MDcwNzc2NjkwNDY0LCAiUGVcdTAwZjFhc2NhbCAxNiAvIChFbGl6YSkiLCAiNzYwNSJdLCBbNDMuMjQwNDU4OTAzMzU5MSwgLTIuOTQ5NjU0MDg5MjQ3OTczNywgIlBlXHUwMGYxYXNjYWwgMjkiLCAiNzYwNiJdLCBbNDMuMjM4NzY3OTkyNDEzNTMsIC0yLjk0ODQ3ODQwOTUwNjI2OCwgIlBlXHUwMGYxYXNjYWwgKDE0NikgLyBSb3RvbmRhIiwgIjc3MDEiXSwgWzQzLjI0MDM2ODgyMTg1MDI5LCAtMi45NDQ0OTU1MTI4ODgzNjU0LCAiU2FuIEp1c3RvIiwgIjc3MDIiXSwgWzQzLjIzOTgwNTc5NDE5MDk1LCAtMi45NDI4NTIzNDM5NTAxMzk3LCAiU2FuIEp1c3RvICg1KSIsICI3NzAzIl0sIFs0My4yNDAwMDczNjg3MjI1OTQsIC0yLjk0MzA3NDg4NjMwNTU0MDcsICJTYW4gSnVzdG8gMTIiLCAiNzcwNCJdLCBbNDMuMjU4NjI2Njg3Njk5MTA2LCAtMi45NTE5MzY4MDI1MzMzNjM3LCAiQmFzdXJ0dWJla29hIC8gKElwYXJyYWxkZSkiLCAiODEwMyJdLCBbNDMuMjU4NDY1MTYzNjMwMTQsIC0yLjk1MTkyMjgzNDk4NjgxNjcsICJCYXN1cnR1YmVrb2EgLyBJcGFycmFsZGUiLCAiODEwNCJdLCBbNDMuMjYxMDA0NTk5OTg5MTg1LCAtMi45NTY1NzkwODc3NjI1MjQ0LCAiQmFzdXJ0dS1LYXN0cmV4YW5hICg2NSkiLCAiODEwNSJdLCBbNDMuMjYwNjc1OTc0NDU4NTIsIC0yLjk1NTk0ODE0ODc5MTY5MiwgIkJhc3VydHUtS2FzdHJleGFuYSA2MyIsICI4MTA2Il0sIFs0My4yNTk5Njg4ODg2MTI3OTYsIC0yLjk1MTIzNzY2NjE1Mjg3MzYsICJHdXJ0dWJheSAvIE9zcGl0YWxlYSIsICI4MTA3Il0sIFs0My4yNTk0NjAwNDMzMDAxNSwgLTIuOTUyMjY5MTkzMzg1ODUzNCwgIk1vbnRldmlkZW8gLyAoR3VydHViYXkpIiwgIjgxMTAiXSwgWzQzLjI2MjU0NzA5MTA5MzAwNSwgLTIuOTU2MzI4OTUzNDE4MjUzMywgIk1vbnRldmlkZW8gLyBTYW50YSBBbmEiLCAiODExMyJdLCBbNDMuMjU3NDc1MDkyMjczMzUsIC0yLjk0NjA3NDI2NDY3NDIxMywgIlRyZW5iaWRla28gRXRvcmJpZGVhIC8gQXV0b25vbVx1MDBlZGEiLCAiODExNyJdLCBbNDMuMjU4MDAwMTkyNzg5NiwgLTIuOTQ5MDUyNTI5MTI5NjIxNSwgIkJhc3VydG8gLyBCcmlcdTAwZjFhcyIsICI4MTIyIl0sIFs0My4yNTc5NDQ4NTg2MzgwNywgLTIuOTQ5MDU1NDY4Njc2Mjg5MywgIkJhc3VydG8gLyBBaXRhIERvbm9zdGlhIiwgIjgxMjMiXSwgWzQzLjI2NDY4Mjg1OTgwNDM0NiwgLTIuOTUzNDA4NDk1NjkxNTQzNCwgIkNcdTAwYmEgVmVudG9zYSA0NiIsICI4MjAzIl0sIFs0My4yNjI4MTY1NjAzMDMyOCwgLTIuOTU2Mzk5NzU3NTMxNjA1NywgIk1vbnRldmlkZW8gLyAoU2FudGEgQW5hKSIsICI4MjA0Il0sIFs0My4yNjQ5NzIxMTUzNTE2OSwgLTIuOTYxMjIxMDc0NjEzMDI0MywgIk1vbnRldmlkZW8gLyBPbGFiZWFnYSIsICI4MjA1Il0sIFs0My4yNjUyODA0NzcxMjIxMywgLTIuOTUyMzgwMjMxMjEzNDgwNiwgIk9sYWJlYWdhIC8gKERpa2VhKSIsICI4MjA2Il0sIFs0My4yNjUyNjQ2OTQyMjYyNSwgLTIuOTUyMTk2MzExNzI5NDI4MywgIk9sYWJlYWdhIC8gRGlrZWEiLCAiODIwNyJdLCBbNDMuMjY0OTExMTQ2NzI1NzgsIC0yLjk1NTA3MDE0Nzc3Nzc3MywgIk9sYWJlYWdhIDIyQSIsICI4MjA4Il0sIFs0My4yNjQ3NTk3OTczMzgzMTQsIC0yLjk1Nzc5MTg2OTc1MTUzMzcsICJPbGFiZWFnYSAzMCIsICI4MjA5Il0sIFs0My4yNjUwMjgyOTAxMzA3MzYsIC0yLjk1ODkxMjU2OTI4MDYzMTcsICJTYW4gTmlrb2xhcyBPbGFiZWFnYSAoMjcpIiwgIjgyMTAiXSwgWzQzLjI2NDQ2MTQ4NDY0OTEsIC0yLjk1NTg0MTgwNTI0MDQxOCwgIlNhbiBOaWtvbGFzIE9sYWJlYWdhIDIyIiwgIjgyMTEiXSwgWzQzLjI2NjA3NDc4MTM2NDUzLCAtMi45NjA2NTg4NjQ2MTY2OTQsICJTYW4gTmlrb2xhcyBPbGFiZWFnYSA1OCIsICI4MjEyIl0sIFs0My4yNTgwMzk0NTA2MDEzOTUsIC0yLjk1NDE1MjcyNjkyMDUyMywgIkF1bnR6ZXR4ZXRhICgxOCkiLCAiODMwMSJdLCBbNDMuMjU3NzcxOTA2MzQ3MDEsIC0yLjk1NDA0MzUxMTUwMzQwMzYsICJBdW50emV0eGV0YSAxOCIsICI4MzAyIl0sIFs0My4yNTgzNTc4NTgyNjI5MSwgLTIuOTU1NzU3MDYxMDkyNzA3NSwgIkF1bnR6ZXR4ZXRhIDQiLCAiODMwMyJdLCBbNDMuMjU4NDA3MTA1NDcyMjMsIC0yLjk1NTgzOTU2OTc1Njc3NiwgIkF1bnR6ZXR4ZXRhIDciLCAiODMwNCJdLCBbNDMuMjU1ODc4Njg5MzQ1MjcsIC0yLjk1Mzg5NjgzODEyNzMwMTYsICJCYXN1cnR1Z29ydGEgMSIsICI4MzA1Il0sIFs0My4yNTY5NzE1OTk3NTQ5OSwgLTIuOTYwMjc5ODY5MTIyMTQzNSwgIktvYmV0YSBNZW5kaWEgKDQxKSAvIE1pcmFkb3IiLCAiODMwNiJdLCBbNDMuMjU1Nzk3MTUyMzQxMzE2LCAtMi45NTk2NjM4ODEzNTY2NTQ3LCAiS29iZXRhIE1lbmRpYSAvIEFjYy5CYXJyaW8iLCAiODMwNyJdLCBbNDMuMjU4OTMyNzQwMDIwMDMsIC0yLjk1Njc1NzA1NjYxMjc0NDMsICJMZXplYWdhIDE0IiwgIjgzMDgiXSwgWzQzLjI1ODkwMDE4MjI1NzI5LCAtMi45NTYzOTM1NTI3OTU3Njg1LCAiTGV6ZWFnYSA5IiwgIjgzMDkiXSwgWzQzLjI1Mzg1MTAxOTM2MDIwNSwgLTIuOTU5MzE3MjE0OTQ5Mjg1LCAiTWFzdXN0ZWdpIEVzdHJhdGEgLyBFc2thaWxlcmFrIiwgIjgzMTAiXSwgWzQzLjI1MzY2NzE4MzM2OSwgLTIuOTU2NjA5OTE5MjE2MDY1OCwgIk1hc3VzdGVnaSBFc3RyYXRhIC8gRXNrb2xhIiwgIjgzMTEiXSwgWzQzLjI1MjY2MDkyNTkyNTc3LCAtMi45NTUzNDkxOTkzMTA3Nzg2LCAiTWFzdXN0ZWdpIEVzdHJhdGEgLyBNaW50ZWdpdHh1ZXRhIiwgIjgzMTIiXSwgWzQzLjI1NTgzMDYxMzc0OTQ5NSwgLTIuOTUzODM5MjgxMTM4MDY0MywgIk1hc3VzdGVnaSBFc3RyYXRhIDMgQmlzIiwgIjgzMTMiXSwgWzQzLjI1MzUwNDgxNzcyNDUwNSwgLTIuOTUzMDUzNzgxNDE2Njg2NiwgIk1pbnRlZ2l0eHVldGEiLCAiODMxNCJdLCBbNDMuMjU3MDIxMjUxNjY5MTEsIC0yLjk1NTEzNDk4NzQ5MjMyMiwgIkxlemVhZ2EgMjUiLCAiODMxNiJdLCBbNDMuMjY0NzI0NjgwNzU5MDgsIC0yLjk2MTE0OTkwMTQ2NjAyMTYsICJNb250ZXZpZGVvIC8gKE9sYWJlYWdhKSIsICI4MzE3Il0sIFs0My4yNjE4MTY3NDY2NjkwOCwgLTIuOTU5OTQ5NjQ1NTMxNDkxLCAiQmFzdXJ0dS1LYXN0cmV4YW5hICgxMjUpIC8gQWxiZXJndWUiLCAiODQwMSJdLCBbNDMuMjYzMzA4MDUxODE3MTYsIC0yLjk2MjQwMTE0NjEzMjc1NCwgIkJhc3VydHUtS2FzdHJleGFuYSAvIEFsdGFtaXJhIiwgIjg0MDIiXSwgWzQzLjI2MTE1MzgwMDkyNTcyLCAtMi45NTk1MjYxMzE1MDE5OTYzLCAiQmFzdXJ0dS1LYXN0cmV4YW5hIDg1IiwgIjg0MDMiXSwgWzQzLjI2MTcyOTMzNTU3NjcyNSwgLTIuOTY1MDI4NDY0MjY3MDI3NywgIktvYmV0YWJpZGVhIC8gQWx0YW1pcmEiLCAiODQwNCJdLCBbNDMuMjc3NDcwNDEyNzcyMzUsIC0yLjk3NDk0OTY5NDI1NDcyNTMsICJGcmF5IEp1YW4gMzUiLCAiODUwMSJdLCBbNDMuMjc2NjQ4MzIzMjk0OTM1LCAtMi45NzIxNjA1ODE1MDY5ODg1LCAiRnJheSBKdWFuIDExIiwgIjg1MDIiXSwgWzQzLjI3MzM5OTM0Njk0ODM5NSwgLTIuOTcwNjI4NjkzMTgxMjAzNiwgIlphenBpbGFuZGEgLyBCaWRlZ2FpbiIsICI4NTAzIl0sIFs0My4yNzE5NjQ5OTcwNjQ5MzQsIC0yLjk2OTQzNjQwNjQ4MDc4NjMsICJaYXpwaWxhbmRhIC8gTWVuZGlnYWluIiwgIjg1MDQiXSwgWzQzLjI3MjE4NzQwMTA0MjI1LCAtMi45NjkyNDE4ODY2NDk1NzI3LCAiWmF6cGlsYW5kYSAvIFBpbmFkaWEiLCAiODUwNSJdLCBbNDMuMjczMjA2NTU4OTg2MjgsIC0yLjk3MTU3NjE0OTM0ODIyNCwgIlphenBpbGFuZGEgNyIsICI4NTA2Il0sIFs0My4yNzExMjM4ODUzMzAxMzQsIC0yLjk3MDk5NjI4MDY5NTAxNDgsICJab3Jyb3R6YWJhc28gKDEyKSIsICI4NTA3Il0sIFs0My4yNzE1NTQyMjE2NjkyODQsIC0yLjk3NDM3MjUzMDY3MDczNywgIlpvcnJvdHphLUthc3RyZXhhbmEgLyAoQ2l1ZGFkIEphcmRcdTAwZWRuKSIsICI4NTA4Il0sIFs0My4yNzUwMTc4NzEzMzU0NCwgLTIuOTcyNzE2OTk5ODA4ODMyNywgIlpvcnJvdHphLUthc3RyZXhhbmEgMjUiLCAiODUwOSJdLCBbNDMuMjcyMTkwNTUyODk2OTY2LCAtMi45NzQxMTkxMzQ2Mzk5NTQzLCAiWm9ycm90emEtS2FzdHJleGFuYSA3NyIsICI4NTExIl0sIFs0My4yNjMzNDk0ODU3Mzg0MiwgLTIuOTYzNDM3OTUzMTA3NzU3LCAiQWx0YW1pcmEiLCAiODYwMSJdLCBbNDMuMjYzNjk5MDMwNzMwMzIsIC0yLjk2MjYwNDcwNDEzODA5MSwgIkJhc3VydHUtS2FzdHJleGFuYSAvIChBbHRhbWlyYSkiLCAiODYwMiJdLCBbNDMuMjU4NjU3MzM1NTAwNzksIC0yLjk2MjM0MjM2NjE0NjU1NjcsICJLb2JldGEgTWVuZGlhIDMzIiwgIjg2MDQiXSwgWzQzLjI2NDA5NjkwMTg2NzI4LCAtMi45NjUzNTE3MTE1NDA0Mjg0LCAiS29iZXRhYmlkZWEgMTA0IiwgIjg2MTAiXSwgWzQzLjI2Nzk1NzczNTI2Mjg2LCAtMi45NjgzMjY5NDExMzE4NzY3LCAiS29iZXRhYmlkZWEgMTkzIC8gQWx0byBLYXN0cmV4YW5hIiwgIjg2MTEiXSwgWzQzLjI2MTQwMDA1NTEyMTE4NiwgLTIuOTcxNDMxMjQ0MzIwNTIzNywgIlpvcnJvdHphLUthc3RyZXhhbmEgLyAoU3RhLlx1MDBjMWd1ZWRhKSIsICI4NjE0Il0sIFs0My4yNjQ0NzY0MzY0MDg5MywgLTIuOTczNjIwMzUyMDQzMTU3LCAiWm9ycm90emEtS2FzdHJleGFuYSAvIEV0eGViYXJyaWEiLCAiODYxNSJdLCBbNDMuMjU1MDg3MjQyNjEyOTUsIC0yLjk3MjQwNzUwNDk0MzI1NiwgIlpvcnJvdHphLUthc3RyZXhhbmEgLyBQdGUuRGlhYmxvIiwgIjg2MTYiXSwgWzQzLjI2MTM0NDQ3NTIxNjI5LCAtMi45NzE0OTIyMDA0ODE5OTcsICJab3Jyb3R6YS1LYXN0cmV4YW5hIC8gU3RhLlx1MDBjMWd1ZWRhIiwgIjg2MTciXSwgWzQzLjI1NjkwNDk0NjkwNzU0LCAtMi45NzA1MDk3NDk0MTEwNjg2LCAiWm9ycm90emEtS2FzdHJleGFuYSAxODUiLCAiODYxOCJdLCBbNDMuMjU4Mjk2MTM3NjQwMjg2LCAtMi45Njk2NjUyODkzNDc4Mzg2LCAiWm9ycm90emEtS2FzdHJleGFuYSAyMDAiLCAiODYxOSJdLCBbNDMuMjU1Njk2OTI3MzM0NTc2LCAtMi45NzM0NDE0NjM2NDgwOTkyLCAiWnViaWxldGEgNzQiLCAiODYyMCJdLCBbNDMuMjQ0MTk5NTIzODM2OTI2LCAtMi45MTczNjk0NTQ3MDgyMjM0LCAiQ2FtaW5vIGRlbCBQb250XHUwMGYybiAvIChJa2FzdG9sYSkiLCAiNDMwNiJdLCBbNDMuMjQ2NDcyMzMyODMyMzI2LCAtMi45MDkyMjk0NDIzNTQzMjksICJDYW1pbm8gZGVsIFBvbnRcdTAwZjNuIiwgIjQzMDgiXSwgWzQzLjI0NjUwNDA0ODU5Nzc5LCAtMi45MDkyODc2NjYyNzg1MDcsICJDYW1pbm8gZGVsIFBvbnRcdTAwZjNuIC8gQXZlbmlkYSBNaXJhZmxvcmVzIiwgIjQzMDkiXSwgWzQzLjI0NjgyNjkwMDM5OTI1NiwgLTIuOTExMzMyODc4ODAxOTEwNiwgIkF2ZGEuIE1pcmFmbG9yZXMgLyAoR2Fzb2xpbmRlZ2lhKSIsICI0MzEwIl0sIFs0My4yNDY3ODE5OTI4MzIyMiwgLTIuOTExNzUxOTU2NDIyNzQ4LCAiQXZkYS4gTWlyYWZsb3JlcyAvIEdhc29saW5kZWdpYSIsICI0MzExIl0sIFs0My4yNjA3NDYwNTMzNzYwMjUsIC0yLjkyOTA0NTcwMzIyNDE0NCwgIkF5YWxhICgyKSIsICI2MTI5Il0sIFs0My4yNjE0Nzg4OTAwNjA5ODUsIC0yLjkyNzgyNzg1Njg1MTI4ODgsICJHcmFuIFZcdTAwZWRhIDIiLCAiNjEzMCJdLCBbNDMuMjg2MDI0NTMyNDIxODU1LCAtMi45NTgzNDE0MDA3NDcxMiwgIkVuZWt1cmkgLyBHYXNvbGluZGVnaWEiLCAiMTcwNSJdLCBbNDMuMjg5NTg3MDYwNTg5NTgsIC0yLjk2MDY4MTk0ODIyMzQ3OCwgIkVuZWt1cmkiLCAiMTcwNiJdLCBbNDMuMjg3NTc5OTYxMjkyMjksIC0yLjk1NzUxNjA5MzM5MDY3NCwgIkVuZWt1cmkgLyAoU2FuIFBhYmxvKSIsICIxNzA3Il0sIFs0My4yODMwOTA0MjcyOTY0OSwgLTIuOTUyOTc4MjA0MjU0Nzk2LCAiRWxvcnJpYWdhIiwgIjE3MDgiXSwgWzQzLjI3OTE3NjUzNjQ2NjQxNiwgLTIuOTQ2MDU4ODExMDQ2NzMzNiwgIkJlcnJpeiAvIFRpcm8gWmVsYWlhIiwgIjE3MDkiXSwgWzQzLjI3OTY0ODQzMDU5Mjc4NiwgLTIuOTQxMzI5NDUwODE4ODYzNywgIk9zdGFsYXJpdHphIEVza29sYSIsICIxNzEwIl0sIFs0My4yNzgyMTQwNzg4MjkxNCwgLTIuOTM0ODYyMTAwMzM1NzYzNiwgIkFpeGVycm90YSIsICIxNzExIl0sIFs0My4yNzY5MDc3NzU3MTQxNSwgLTIuOTI2NTE1NjY1NjAwMTM2LCAiQXJ0eGFuZGEgLyBKZXN1cyBNYXJpYSBJa2FzdGV0eGVhIiwgIjI3MDYiXSwgWzQzLjI3NjE2MzgwMjkwMjc5LCAtMi45MjQzOTQ1ODA0MTEwMjgsICJBcnR4YW5kYSAvIE5vZ2FybyIsICIyNzA3Il0sIFs0My4yNzQzNjE5NTk3MDEwMDQsIC0yLjkxOTY1MTY1OTMyMTI4NzMsICJBcnR4YW5kYSAvIEZ1bmlrdWxhcnJhIiwgIjI3MDgiXSwgWzQzLjI3MzU3MTA3OTUwMDExNSwgLTIuOTE3NTAyODYzNjg2NzUxNywgIkFydHhhbmRhIC8gS2lyb2xkZWdpYSIsICIyNzA5Il0sIFs0My4yNzE1MDQxNzE2NjM2NywgLTIuOTEzMTA5NTI4MzgyMTg0NiwgIkFydHhhbmRhIC8gTGEgRXNwZXJhbnphIiwgIjI3MTAiXSwgWzQzLjI2MTAxMjY1MTQ5OTA0NCwgLTIuOTQ4NTQ3NzIwMjAzNDQsICJMdWlzIEJyaVx1MDBmMWFzIDI3IiwgIjgxMjgiXSwgWzQzLjI0ODQ1MDY0MzExMjY3NiwgLTIuOTEyNTY4MzUxMjY4MTI4LCAiUGludG9yIExvc2FkYSAyNiIsICI0MzEyIl0sIFs0My4yNjY5MTQ2NTQzNzU2NiwgLTIuOTIyNzM0ODUyNzQ5MzE2LCAiTWF0aWtvIDI3IiwgIjIyMDciXSwgWzQzLjI0NDIxOTAzNTg5NjIxNSwgLTIuOTE3NDIxMjI3MzUyMDI0NCwgIkNhbWlubyBkZWwgUG9udG9uIC8gSWthc3RvbGEiLCAiNDMwNyJdLCBbNDMuMjQyODgxODcwOTczMTYsIC0yLjkzODE1ODA1OTQyNTA3MDIsICJMYXJyYXNraXR1YmlkZWEgKDgxKSIsICI3NDE4Il0sIFs0My4yNTM1MzczNDg4ODk4MywgLTIuOTI5NDA3NzkxNTc0NDMyLCAiTWluYSBTYW4gTHVpcyIsICI1OTE5Il0sIFs0My4yNTUxNDU2ODgwMjAyODUsIC0yLjk3MTkzNjIyMjkxNTU1MTcsICJab3Jyb3R6YS1LYXN0cmV4YW5hIC8gKFB0ZS4gRGlhYmxvKSIsICI4NjIxIl0sIFs0My4yNjA0NDU4MjY2OTA5NzYsIC0yLjk0NzE3MjYwMjc3Nzg4NDYsICJTYWJpbm8gQXJhbmEgMzIiLCAiODEyOSJdLCBbNDMuMjY1NjczMDk1ODYwMDgsIC0yLjk1NTU0NTQzMjA0Mzk2NDUsICJSaWJlcmEgZGUgRGV1c3R1ICg5KSIsICIxNTE3Il0sIFs0My4yNjc4NjUxMjI3MjkzMiwgLTIuOTUxMzQxODg4NzIxMDg0LCAiR2VuZXJhbCBFcmFzbyAvIENsaW5pY2EgSU1RIiwgIjE1MTgiXSwgWzQzLjI2NTg3Mjg0ODMzMzg5LCAtMi45NTQ2OTQwMjE5MDg1NTYsICJSaWJlcmEgZGUgRGV1c3R1IDgiLCAiMTUxNiJdLCBbNDMuMjUyMDE5NDU4MDg3Mzk2LCAtMi45Mzg3MjU5MDk5MDY1NTIsICJFc2t1cnR6ZSAoMTApIiwgIjcyMTEiXSwgWzQzLjI2NDE0Njk0MTQ0MDA3NSwgLTIuOTA4OTI2OTUzMjg1NzEyNywgIkF0eGV0YWJpZGVhIC8gSmVzdWl0aW5hcyIsICIyNzEzIl0sIFs0My4yNjU3NTA3OTc3NTU1MywgLTIuOTYwMDE3NDU0MTc0NDEzOCwgIlNpcmd1ZXJhcyAzIiwgIjgyMTMiXSwgWzQzLjI1MjAwNTI4MTQ0Mzc4LCAtMi45MjI3OTQ5NTQxNjQzNTc0LCAiVXJhenVycnV0aWEgMjkiLCAiNTYwNSJdLCBbNDMuMjczNTIxMzc2MzEyNzIsIC0yLjk1NDAzMzEzMDg3NDY4MzQsICJJYmFycmVrb2xhbmRhIDE3IiwgIjE0MzAiXSwgWzQzLjI3MzQyNjQ3ODEzNzAwNCwgLTIuOTUzNDUyMTc5MjE2OTkxLCAiSWJhcnJla29sYW5kYSAvIFBhcmtpbmciLCAiMTQzMSJdLCBbNDMuMjc1MzgzMTE2MjY1NjMsIC0yLjk1MzY0MzMxODAwOTYwMzYsICJNb250ZSBFbG9ycmlhZ2EiLCAiMTcxMiJdLCBbNDMuMjc1Njg3MTg2OTA4NiwgLTIuOTcxOTAwMDE3MzYyNzM3NywgIlpvcnJvdHphLUthc3RyZXhhbmEgMTAiLCAiODUxMiJdLCBbNDMuMjU0MDMyNzc5Nzc3MzA1LCAtMi45NDI1Nzg3ODM2NTcxNzE3LCAiQXZkYS4gRmVycm9jYXJyaWwiLCAiNzMyNCJdLCBbNDMuMjY5MTkxOTIzNzg1MTUsIC0yLjkwODc4MDk3ODc1ODE4MTMsICJBcnR4YW5kYSAvIEJlZ2lyYXRva2lhIiwgIjI3MTEiXSwgWzQzLjI3MTAxMTcwOTE1MTI5NiwgLTIuOTQ2MTU4OTc0ODMxODM2LCAiTWFkYXJpYWdhIDEzIiwgIjE0MzIiXSwgWzQzLjI2ODE4NDgwMjI0MTI4LCAtMi45NTQwMTAxMDAwNjgzMDksICJKdWxpbyBVcnF1aWpvIiwgIjE1MTkiXSwgWzQzLjI2MDEwMTE1Njg3ODE4LCAtMi45NTI5NzE0OTM3NTUyMDk0LCAiSG9zcGl0YWwgQmFzdXJ0byIsICI4MTM0Il0sIFs0My4yNjQ5MjYxNjUzNDEzMzYsIC0yLjk0NDA1OTk3MDk0MjI5MDgsICJHcmFuIFZcdTAwZWRhIDg1IiwgIjYyMzEiXSwgWzQzLjI3MDE4MTI3OTgwNTg4LCAtMi45MzcyNzQwNjUyNzEwMDQ1LCAiVW5pdmVyc2lkYWQgRGV1c3RvIiwgIjE0MzQiXSwgWzQzLjI3MDIyNDM0MDA3NjA1NSwgLTIuOTM3NjA0OTA0MDk3NzkyLCAiVW5pdmVyc2lkYWQgRGV1c3RvIiwgIjE0MzUiXV07CiAgICAgICAgICAgICAgICB2YXIgY2x1c3RlciA9IEwubWFya2VyQ2x1c3Rlckdyb3VwKHsiZGlzYWJsZUNsdXN0ZXJpbmdBdFpvb20iOiAxNH0pOwoKICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZGF0YS5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgICAgIHZhciByb3cgPSBkYXRhW2ldOwogICAgICAgICAgICAgICAgICAgIHZhciBtYXJrZXIgPSBjYWxsYmFjayhyb3cpOwogICAgICAgICAgICAgICAgICAgIG1hcmtlci5hZGRUbyhjbHVzdGVyKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBjbHVzdGVyLmFkZFRvKG1hcF80ZmIwYmU1ZmM2Njk0YjAyYjQ2OWI5NWRkNmE5MDYzNyk7CiAgICAgICAgICAgICAgICByZXR1cm4gY2x1c3RlcjsKICAgICAgICAgICAgfSkoKTsKICAgICAgICAKICAgIAogICAgICAgICAgICBtYXBfNGZiMGJlNWZjNjY5NGIwMmI0NjliOTVkZDZhOTA2MzcuZml0Qm91bmRzKAogICAgICAgICAgICAgICAgW1s0My4yMjYzNzA5ODgyNTQ1MSwgLTIuOTc0OTQ5Njk0MjU0NzI1M10sIFs0My4yODk1ODcwNjA1ODk1OCwgLTIuODk2NTA2MTE2NjkzNzQ0XV0sCiAgICAgICAgICAgICAgICB7InBhZGRpbmciOiBbMSwgMV19CiAgICAgICAgICAgICk7CiAgICAgICAgCjwvc2NyaXB0Pg==\" style=\"position:absolute;width:100%;height:100%;left:0;top:0;border:none !important;\" allowfullscreen webkitallowfullscreen mozallowfullscreen></iframe></div></div>"
      ],
      "text/plain": [
       "<folium.folium.Map at 0x28d1ac4d6c8>"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "feed.map_stops(feed.stops.stop_id)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "feed = feed.create_shapes()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div style=\"width:100%;\"><div style=\"position:relative;width:100%;height:0;padding-bottom:60%;\"><iframe src=\"data:text/html;charset=utf-8;base64,PCFET0NUWVBFIGh0bWw+CjxoZWFkPiAgICAKICAgIDxtZXRhIGh0dHAtZXF1aXY9ImNvbnRlbnQtdHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiAvPgogICAgCiAgICAgICAgPHNjcmlwdD4KICAgICAgICAgICAgTF9OT19UT1VDSCA9IGZhbHNlOwogICAgICAgICAgICBMX0RJU0FCTEVfM0QgPSBmYWxzZTsKICAgICAgICA8L3NjcmlwdD4KICAgIAogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vbGVhZmxldEAxLjUuMS9kaXN0L2xlYWZsZXQuanMiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vY29kZS5qcXVlcnkuY29tL2pxdWVyeS0xLjEyLjQubWluLmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL21heGNkbi5ib290c3RyYXBjZG4uY29tL2Jvb3RzdHJhcC8zLjIuMC9qcy9ib290c3RyYXAubWluLmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9MZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy8yLjAuMi9sZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy5qcyI+PC9zY3JpcHQ+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vbGVhZmxldEAxLjUuMS9kaXN0L2xlYWZsZXQuY3NzIi8+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vbWF4Y2RuLmJvb3RzdHJhcGNkbi5jb20vYm9vdHN0cmFwLzMuMi4wL2Nzcy9ib290c3RyYXAubWluLmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL21heGNkbi5ib290c3RyYXBjZG4uY29tL2Jvb3RzdHJhcC8zLjIuMC9jc3MvYm9vdHN0cmFwLXRoZW1lLm1pbi5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9mb250LWF3ZXNvbWUvNC42LjMvY3NzL2ZvbnQtYXdlc29tZS5taW4uY3NzIi8+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vY2RuanMuY2xvdWRmbGFyZS5jb20vYWpheC9saWJzL0xlYWZsZXQuYXdlc29tZS1tYXJrZXJzLzIuMC4yL2xlYWZsZXQuYXdlc29tZS1tYXJrZXJzLmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL3Jhd2Nkbi5naXRoYWNrLmNvbS9weXRob24tdmlzdWFsaXphdGlvbi9mb2xpdW0vbWFzdGVyL2ZvbGl1bS90ZW1wbGF0ZXMvbGVhZmxldC5hd2Vzb21lLnJvdGF0ZS5jc3MiLz4KICAgIDxzdHlsZT5odG1sLCBib2R5IHt3aWR0aDogMTAwJTtoZWlnaHQ6IDEwMCU7bWFyZ2luOiAwO3BhZGRpbmc6IDA7fTwvc3R5bGU+CiAgICA8c3R5bGU+I21hcCB7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7Ym90dG9tOjA7cmlnaHQ6MDtsZWZ0OjA7fTwvc3R5bGU+CiAgICAKICAgICAgICAgICAgPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCwKICAgICAgICAgICAgICAgIGluaXRpYWwtc2NhbGU9MS4wLCBtYXhpbXVtLXNjYWxlPTEuMCwgdXNlci1zY2FsYWJsZT1ubyIgLz4KICAgICAgICAgICAgPHN0eWxlPgogICAgICAgICAgICAgICAgI21hcF8zNjhhODc5ZDkzN2U0NTY2YTJlNWE2NTYxMTJmOWRiMSB7CiAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAuMCU7CiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAuMCU7CiAgICAgICAgICAgICAgICAgICAgbGVmdDogMC4wJTsKICAgICAgICAgICAgICAgICAgICB0b3A6IDAuMCU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIDwvc3R5bGU+CiAgICAgICAgCjwvaGVhZD4KPGJvZHk+ICAgIAogICAgCiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZvbGl1bS1tYXAiIGlkPSJtYXBfMzY4YTg3OWQ5MzdlNDU2NmEyZTVhNjU2MTEyZjlkYjEiID48L2Rpdj4KICAgICAgICAKPC9ib2R5Pgo8c2NyaXB0PiAgICAKICAgIAogICAgICAgICAgICB2YXIgbWFwXzM2OGE4NzlkOTM3ZTQ1NjZhMmU1YTY1NjExMmY5ZGIxID0gTC5tYXAoCiAgICAgICAgICAgICAgICAibWFwXzM2OGE4NzlkOTM3ZTQ1NjZhMmU1YTY1NjExMmY5ZGIxIiwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBjZW50ZXI6IFswLCAwXSwKICAgICAgICAgICAgICAgICAgICBjcnM6IEwuQ1JTLkVQU0czODU3LAogICAgICAgICAgICAgICAgICAgIHpvb206IDEsCiAgICAgICAgICAgICAgICAgICAgem9vbUNvbnRyb2w6IHRydWUsCiAgICAgICAgICAgICAgICAgICAgcHJlZmVyQ2FudmFzOiBmYWxzZSwKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIAoKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgdGlsZV9sYXllcl8xZjg5YTRmZDBmMTA0MjliYWE4NzNhYjI4ZTNlNTUwYSA9IEwudGlsZUxheWVyKAogICAgICAgICAgICAgICAgImh0dHBzOi8vY2FydG9kYi1iYXNlbWFwcy17c30uZ2xvYmFsLnNzbC5mYXN0bHkubmV0L2xpZ2h0X2FsbC97en0ve3h9L3t5fS5wbmciLAogICAgICAgICAgICAgICAgeyJhdHRyaWJ1dGlvbiI6ICJcdTAwMjZjb3B5OyBcdTAwM2NhIGhyZWY9XCJodHRwOi8vd3d3Lm9wZW5zdHJlZXRtYXAub3JnL2NvcHlyaWdodFwiXHUwMDNlT3BlblN0cmVldE1hcFx1MDAzYy9hXHUwMDNlIGNvbnRyaWJ1dG9ycyBcdTAwMjZjb3B5OyBcdTAwM2NhIGhyZWY9XCJodHRwOi8vY2FydG9kYi5jb20vYXR0cmlidXRpb25zXCJcdTAwM2VDYXJ0b0RCXHUwMDNjL2FcdTAwM2UsIENhcnRvREIgXHUwMDNjYSBocmVmID1cImh0dHA6Ly9jYXJ0b2RiLmNvbS9hdHRyaWJ1dGlvbnNcIlx1MDAzZWF0dHJpYnV0aW9uc1x1MDAzYy9hXHUwMDNlIiwgImRldGVjdFJldGluYSI6IGZhbHNlLCAibWF4TmF0aXZlWm9vbSI6IDE4LCAibWF4Wm9vbSI6IDE4LCAibWluWm9vbSI6IDAsICJub1dyYXAiOiBmYWxzZSwgIm9wYWNpdHkiOiAxLCAic3ViZG9tYWlucyI6ICJhYmMiLCAidG1zIjogZmFsc2V9CiAgICAgICAgICAgICkuYWRkVG8obWFwXzM2OGE4NzlkOTM3ZTQ1NjZhMmU1YTY1NjExMmY5ZGIxKTsKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgZmVhdHVyZV9ncm91cF9iMGZhZTJkZTJiMTk0MjBhOGY2OWE1OWY3YjQ5ZWZlNSA9IEwuZmVhdHVyZUdyb3VwKAogICAgICAgICAgICAgICAge30KICAgICAgICAgICAgKS5hZGRUbyhtYXBfMzY4YTg3OWQ5MzdlNDU2NmEyZTVhNjU2MTEyZjlkYjEpOwogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb2x5X2xpbmVfMWJmMmUxYjBkMWI5NGNlNWIzOGI1YzUzMmFmZWFmN2EgPSBMLnBvbHlsaW5lKAogICAgICAgICAgICAgICAgW1s0My4yNzU0MTI0NDMwODcwOSwgLTIuOTQ3NDIwODU3NjQ2NjgyN10sIFs0My4yNzUzOTg1MTAwMDYyNTUsIC0yLjk0OTYxNzYxMjM3NDgyMl0sIFs0My4yNzY4NzcxNDE5MTc4ODYsIC0yLjk1MzIxNzE5MTgzODI0MDRdLCBbNDMuMjc2NTQ0Nzk5MjcxOTcsIC0yLjk1Mzg0NDExODA2ODUyOV0sIFs0My4yNzM4NDA5NDE2MzA4MiwgLTIuOTU1NDEyNzA3NTExMTU2M10sIFs0My4yNzE5MjU0OTgwMDkwMjYsIC0yLjk1MDA5NjM0NjEwMDM5OTddLCBbNDMuMjcxNzE2NTQ3MDg3NzA2LCAtMi45NDQ5MzU5MjQ2NzYzMzZdLCBbNDMuMjcwOTQ2Njg1Njk1OTc1LCAtMi45NDE1NDI4OTg4NDY2NTNdLCBbNDMuMjY3ODExOTU3ODQ2NzIsIC0yLjkzOTcyOTQ5OTI4OTcwM10sIFs0My4yNjU0Nzc0Njg1MDE4NjQsIC0yLjkzNjgwMDAwOTk1NTQ4NDNdLCBbNDMuMjYyODgzMjk0MTk3OTcsIC0yLjkzNTYzNzUxNzMwMDk2OV0sIFs0My4yNjI2OTA3NjE5NzcwMywgLTIuOTMzNzUwOTk2NDMxNTU5XSwgWzQzLjI2MTUyOTk0NjQwMDE3NCwgLTIuOTI4NDc2NTgwODg0NjUxM10sIFs0My4yNjE0Nzg4OTAwNjA5ODUsIC0yLjkyNzgyNzg1Njg1MTI4ODhdXSwKICAgICAgICAgICAgICAgIHsiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsICJjb2xvciI6ICIjNjZjMmE1IiwgImRhc2hBcnJheSI6IG51bGwsICJkYXNoT2Zmc2V0IjogbnVsbCwgImZpbGwiOiBmYWxzZSwgImZpbGxDb2xvciI6ICIjNjZjMmE1IiwgImZpbGxPcGFjaXR5IjogMC4yLCAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsICJsaW5lQ2FwIjogInJvdW5kIiwgImxpbmVKb2luIjogInJvdW5kIiwgIm5vQ2xpcCI6IGZhbHNlLCAib3BhY2l0eSI6IDEuMCwgInNtb290aEZhY3RvciI6IDEuMCwgInN0cm9rZSI6IHRydWUsICJ3ZWlnaHQiOiAzfQogICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfYjBmYWUyZGUyYjE5NDIwYThmNjlhNTlmN2I0OWVmZTUpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIHBvcHVwXzJkNWZiYTA0MGE0MDRjNjZhZTBkYzMwZmExZDMwNWY1ID0gTC5wb3B1cCh7Im1heFdpZHRoIjogIjEwMCUifSk7CgogICAgICAgIAogICAgICAgICAgICB2YXIgaHRtbF9kNzliMzM0Mjk1ZTQ0YzQwYTZmNWQxNzhiMjkxYjYzNCA9ICQoYDxkaXYgaWQ9Imh0bWxfZDc5YjMzNDI5NWU0NGM0MGE2ZjVkMTc4YjI5MWI2MzQiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPjx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIHRhYmxlLWhvdmVyIj48dHI+PHRoPmRpcmVjdGlvbl9pZDwvdGg+PHRkPjwvdGQ+PC90cj48dHI+PHRoPnJvdXRlX2lkPC90aD48dGQ+MTg5PC90ZD48L3RyPjx0cj48dGg+c2VydmljZV9pZDwvdGg+PHRkPjE8L3RkPjwvdHI+PHRyPjx0aD5zaGFwZV9pZDwvdGg+PHRkPnNoYXBlXzAwOTwvdGQ+PC90cj48dHI+PHRoPnRyaXBfaGVhZHNpZ248L3RoPjx0ZD4gUGxhemEgQmlyaWJpbGE8L3RkPjwvdHI+PHRyPjx0aD50cmlwX2lkPC90aD48dGQ+NDE0NjY4PC90ZD48L3RyPjwvdGFibGU+PC9kaXY+YClbMF07CiAgICAgICAgICAgIHBvcHVwXzJkNWZiYTA0MGE0MDRjNjZhZTBkYzMwZmExZDMwNWY1LnNldENvbnRlbnQoaHRtbF9kNzliMzM0Mjk1ZTQ0YzQwYTZmNWQxNzhiMjkxYjYzNCk7CiAgICAgICAgCgogICAgICAgIHBvbHlfbGluZV8xYmYyZTFiMGQxYjk0Y2U1YjM4YjVjNTMyYWZlYWY3YS5iaW5kUG9wdXAocG9wdXBfMmQ1ZmJhMDQwYTQwNGM2NmFlMGRjMzBmYTFkMzA1ZjUpCiAgICAgICAgOwoKICAgICAgICAKICAgIAogICAgCiAgICAgICAgICAgIHZhciBmZWF0dXJlX2dyb3VwX2E5MTgxOGQ0MzZmYjQ3YTI4ODkwN2JjOTUzOTc2ZmY2ID0gTC5mZWF0dXJlR3JvdXAoCiAgICAgICAgICAgICAgICB7fQogICAgICAgICAgICApLmFkZFRvKG1hcF8zNjhhODc5ZDkzN2U0NTY2YTJlNWE2NTYxMTJmOWRiMSk7CiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvbHlfbGluZV9hZDcxNzllOWVhYTY0NGM2OTUyYmY2M2E2OTMxZDQ2YSA9IEwucG9seWxpbmUoCiAgICAgICAgICAgICAgICBbWzQzLjI2MTQ3ODg5MDA2MDk4NSwgLTIuOTI3ODI3ODU2ODUxMjg4OF0sIFs0My4yNjI3MDk4NjczOTA5NywgLTIuOTMzNDU3MjM4NzAyMTU3NF0sIFs0My4yNjM5MzA5OTA4NzgzMzYsIC0yLjkzNTU1NjkzNjU1NTUxM10sIFs0My4yNjU4NjQ3MzYxNzM4MywgLTIuOTM2OTgyMjA4NDY4MzIxN10sIFs0My4yNjc1NzYzMjE1NjgxODUsIC0yLjkzOTM3MDA1NjYyMDQ1Nl0sIFs0My4yNzEwMjYwMjQyMTUwMDQsIC0yLjk0MTIzOTg3ODY2NjQ0NV0sIFs0My4yNzE5NDc4MDYwNzU0NywgLTIuOTQ1MDg1Mzk1NzcyMjU0N10sIFs0My4yNzIxMjE1NzU0Nzk0OSwgLTIuOTUwNTk0MjA4NzM2MjkxNV0sIFs0My4yNzM2NTIyNDAwMDE3MjQsIC0yLjk1NDQyNzg1MTkyNzc1NDVdLCBbNDMuMjc1MzgzMTE2MjY1NjMsIC0yLjk1MzY0MzMxODAwOTYwMzZdLCBbNDMuMjc1NDQ4MDYyNzQ5MjQsIC0yLjk1MjM5NTU3MjUyMjQ3NjZdLCBbNDMuMjc0MTQwNDIwNzkzNTcsIC0yLjk0OTc0MTM5MTg3MzAzXSwgWzQzLjI3NDA5ODk4NTExNTY1LCAtMi45NDg0NTk0MTkyMDE0NDE3XSwgWzQzLjI3NDQ3NDU2NzE5MzYxNCwgLTIuOTQ3MTk5NTYwNzY5ODgzOF0sIFs0My4yNzU0MTI0NDMwODcwOSwgLTIuOTQ3NDIwODU3NjQ2NjgyN11dLAogICAgICAgICAgICAgICAgeyJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwgImNvbG9yIjogIiNmYzhkNjIiLCAiZGFzaEFycmF5IjogbnVsbCwgImRhc2hPZmZzZXQiOiBudWxsLCAiZmlsbCI6IGZhbHNlLCAiZmlsbENvbG9yIjogIiNmYzhkNjIiLCAiZmlsbE9wYWNpdHkiOiAwLjIsICJmaWxsUnVsZSI6ICJldmVub2RkIiwgImxpbmVDYXAiOiAicm91bmQiLCAibGluZUpvaW4iOiAicm91bmQiLCAibm9DbGlwIjogZmFsc2UsICJvcGFjaXR5IjogMS4wLCAic21vb3RoRmFjdG9yIjogMS4wLCAic3Ryb2tlIjogdHJ1ZSwgIndlaWdodCI6IDN9CiAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9hOTE4MThkNDM2ZmI0N2EyODg5MDdiYzk1Mzk3NmZmNik7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgcG9wdXBfYmE0NDE1ZDZjOWM1NGQ3MTk3NTM3YWY2MDMxOGMxZTcgPSBMLnBvcHVwKHsibWF4V2lkdGgiOiAiMTAwJSJ9KTsKCiAgICAgICAgCiAgICAgICAgICAgIHZhciBodG1sXzQ5MDNmNThiMzAwODRiMjc5MWI4MjBjZTI2ZmI3ODk4ID0gJChgPGRpdiBpZD0iaHRtbF80OTAzZjU4YjMwMDg0YjI3OTFiODIwY2UyNmZiNzg5OCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+PHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQgdGFibGUtaG92ZXIiPjx0cj48dGg+ZGlyZWN0aW9uX2lkPC90aD48dGQ+PC90ZD48L3RyPjx0cj48dGg+cm91dGVfaWQ8L3RoPjx0ZD4xOTA8L3RkPjwvdHI+PHRyPjx0aD5zZXJ2aWNlX2lkPC90aD48dGQ+MTwvdGQ+PC90cj48dHI+PHRoPnNoYXBlX2lkPC90aD48dGQ+c2hhcGVfMDk1PC90ZD48L3RyPjx0cj48dGg+dHJpcF9oZWFkc2lnbjwvdGg+PHRkPiBQbGF6YSBCaXJpYmlsYTwvdGQ+PC90cj48dHI+PHRoPnRyaXBfaWQ8L3RoPjx0ZD40MTQ3ODA8L3RkPjwvdHI+PC90YWJsZT48L2Rpdj5gKVswXTsKICAgICAgICAgICAgcG9wdXBfYmE0NDE1ZDZjOWM1NGQ3MTk3NTM3YWY2MDMxOGMxZTcuc2V0Q29udGVudChodG1sXzQ5MDNmNThiMzAwODRiMjc5MWI4MjBjZTI2ZmI3ODk4KTsKICAgICAgICAKCiAgICAgICAgcG9seV9saW5lX2FkNzE3OWU5ZWFhNjQ0YzY5NTJiZjYzYTY5MzFkNDZhLmJpbmRQb3B1cChwb3B1cF9iYTQ0MTVkNmM5YzU0ZDcxOTc1MzdhZjYwMzE4YzFlNykKICAgICAgICA7CgogICAgICAgIAogICAgCiAgICAKICAgICAgICAgICAgdmFyIGZlYXR1cmVfZ3JvdXBfNjIwY2ZjNGI5ZTE3NGMwYWIwMzM1YzRkYmY1NDZkYTMgPSBMLmZlYXR1cmVHcm91cCgKICAgICAgICAgICAgICAgIHt9CiAgICAgICAgICAgICkuYWRkVG8obWFwXzM2OGE4NzlkOTM3ZTQ1NjZhMmU1YTY1NjExMmY5ZGIxKTsKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9seV9saW5lXzMwOTQ2MTZjZmJjZTQyZDdiOTZkNGJiZGVmMWZlYTFlID0gTC5wb2x5bGluZSgKICAgICAgICAgICAgICAgIFtbNDMuMjYxNDQ4MTY4MjA1NzksIC0yLjkyNzE5MDE3NDYzNDg2ODddLCBbNDMuMjY0MDk5NTEzNTAwMDIsIC0yLjkyMjU5MDExMjA3MjU4NzddLCBbNDMuMjY0NzUwMzczNTQ3MDQ1LCAtMi45MTg0MTM4ODAwMzU5OTg0XSwgWzQzLjI2MDc4NTE3ODMyNTU1LCAtMi45MTQ4MDQ0NTQxOTYwMTgzXSwgWzQzLjI1ODk4MTU3MTM1NjcwNiwgLTIuOTEzODY3MDU3NDIzNzQzN10sIFs0My4yNTc4MzA4MzMzNDQ4NSwgLTIuOTA5NzAyMjI5ODEzNzU0XSwgWzQzLjI2MDMyOTE0NDY3ODQ2NSwgLTIuOTA0NzQ3MTQyMzEyNzMyXSwgWzQzLjI1ODQ0MDgwNTQ5MjA2NCwgLTIuOTAyNzIyODkyNDc1MTc3XSwgWzQzLjI1OTY5NTc4MTEzMjM2NSwgLTIuOTAwNDcxNzA5MjEyMjQ0NV0sIFs0My4yNjEzMzYwNzQwMDY5OCwgLTIuODk5NTc4Njg4OTM2MzIxM10sIFs0My4yNjA4MTQ4MDkwMDg3NCwgLTIuODk2NjU4ODQyMDIzMjczN11dLAogICAgICAgICAgICAgICAgeyJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwgImNvbG9yIjogIiM4ZGEwY2IiLCAiZGFzaEFycmF5IjogbnVsbCwgImRhc2hPZmZzZXQiOiBudWxsLCAiZmlsbCI6IGZhbHNlLCAiZmlsbENvbG9yIjogIiM4ZGEwY2IiLCAiZmlsbE9wYWNpdHkiOiAwLjIsICJmaWxsUnVsZSI6ICJldmVub2RkIiwgImxpbmVDYXAiOiAicm91bmQiLCAibGluZUpvaW4iOiAicm91bmQiLCAibm9DbGlwIjogZmFsc2UsICJvcGFjaXR5IjogMS4wLCAic21vb3RoRmFjdG9yIjogMS4wLCAic3Ryb2tlIjogdHJ1ZSwgIndlaWdodCI6IDN9CiAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF82MjBjZmM0YjllMTc0YzBhYjAzMzVjNGRiZjU0NmRhMyk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgcG9wdXBfZjNiMDhiN2NlOGIyNGI2Nzk4ZGY1YzYyYTA0NTJjNjMgPSBMLnBvcHVwKHsibWF4V2lkdGgiOiAiMTAwJSJ9KTsKCiAgICAgICAgCiAgICAgICAgICAgIHZhciBodG1sXzViM2Y5NTQyMTI2MDQxODM5ZTE2OWUwOWNjZjc2MjhmID0gJChgPGRpdiBpZD0iaHRtbF81YjNmOTU0MjEyNjA0MTgzOWUxNjllMDljY2Y3NjI4ZiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+PHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQgdGFibGUtaG92ZXIiPjx0cj48dGg+ZGlyZWN0aW9uX2lkPC90aD48dGQ+PC90ZD48L3RyPjx0cj48dGg+cm91dGVfaWQ8L3RoPjx0ZD4xOTE8L3RkPjwvdHI+PHRyPjx0aD5zZXJ2aWNlX2lkPC90aD48dGQ+MTwvdGQ+PC90cj48dHI+PHRoPnNoYXBlX2lkPC90aD48dGQ+c2hhcGVfMDg3PC90ZD48L3RyPjx0cj48dGg+dHJpcF9oZWFkc2lnbjwvdGg+PHRkPiBPdHhhcmtvYWdhPC90ZD48L3RyPjx0cj48dGg+dHJpcF9pZDwvdGg+PHRkPjQwOTAxODwvdGQ+PC90cj48L3RhYmxlPjwvZGl2PmApWzBdOwogICAgICAgICAgICBwb3B1cF9mM2IwOGI3Y2U4YjI0YjY3OThkZjVjNjJhMDQ1MmM2My5zZXRDb250ZW50KGh0bWxfNWIzZjk1NDIxMjYwNDE4MzllMTY5ZTA5Y2NmNzYyOGYpOwogICAgICAgIAoKICAgICAgICBwb2x5X2xpbmVfMzA5NDYxNmNmYmNlNDJkN2I5NmQ0YmJkZWYxZmVhMWUuYmluZFBvcHVwKHBvcHVwX2YzYjA4YjdjZThiMjRiNjc5OGRmNWM2MmEwNDUyYzYzKQogICAgICAgIDsKCiAgICAgICAgCiAgICAKICAgIAogICAgICAgICAgICB2YXIgZmVhdHVyZV9ncm91cF82ZmFjYTkyZDUxZmI0YjNiOWVmOTBjMzU4NTgzZjQzNSA9IEwuZmVhdHVyZUdyb3VwKAogICAgICAgICAgICAgICAge30KICAgICAgICAgICAgKS5hZGRUbyhtYXBfMzY4YTg3OWQ5MzdlNDU2NmEyZTVhNjU2MTEyZjlkYjEpOwogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb2x5X2xpbmVfZTliNTIzODg1NTFiNGJjNThmMzE0Mzg0OTA2MWYzYzkgPSBMLnBvbHlsaW5lKAogICAgICAgICAgICAgICAgW1s0My4yNjA4MTQ4MDkwMDg3NCwgLTIuODk2NjU4ODQyMDIzMjczN10sIFs0My4yNjA4NDk2NDUxMjYxOSwgLTIuODk4ODI3MjM0NTIzMDQ1XSwgWzQzLjI1OTQwMjg3NjU4NzE3NCwgLTIuOTAwMzAxMzI2OTk2NDE1NV0sIFs0My4yNTg2NzY0NzgzODEzOTYsIC0yLjkwMjcyMDQ2OTkyMDg0ODRdLCBbNDMuMjYwMzkzNjA5NTAwMTEsIC0yLjkwNDY1OTU3MTE4NTcxNF0sIFs0My4yNTg5MDQ5Nzc2ODYxMywgLTIuOTA5MDQxNTI3MDgyMjc2XSwgWzQzLjI1Njg1NDkxMTk4MjI4LCAtMi45MTE2NTk1MTY0NDQ5NDEzXSwgWzQzLjI2MTUzMTAwMjA2NTQxLCAtMi45MTUyNzQyNjc1NDQ0NDY3XSwgWzQzLjI2MDMxNTU0NzMwNzYxLCAtMi45MTQwNDQ0NDYwMzY0NTVdLCBbNDMuMjY0OTAwMjczODQ1NDYsIC0yLjkxODMzNTczMjIwMDI2MDhdLCBbNDMuMjY0OTgyMjYxMjg4NzUsIC0yLjkyMjQ3NjQ3MDc1MDI1OTddLCBbNDMuMjYyODQ1MTIxMTIyMTA1LCAtMi45MjMwNTkxNDMzOTk4NjE2XSwgWzQzLjI1OTc5NTgzMzEyMzI5LCAtMi45MjQwODcyNzkzMTM5NDldLCBbNDMuMjYxNDQ4MTY4MjA1NzksIC0yLjkyNzE5MDE3NDYzNDg2ODddXSwKICAgICAgICAgICAgICAgIHsiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsICJjb2xvciI6ICIjZTc4YWMzIiwgImRhc2hBcnJheSI6IG51bGwsICJkYXNoT2Zmc2V0IjogbnVsbCwgImZpbGwiOiBmYWxzZSwgImZpbGxDb2xvciI6ICIjZTc4YWMzIiwgImZpbGxPcGFjaXR5IjogMC4yLCAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsICJsaW5lQ2FwIjogInJvdW5kIiwgImxpbmVKb2luIjogInJvdW5kIiwgIm5vQ2xpcCI6IGZhbHNlLCAib3BhY2l0eSI6IDEuMCwgInNtb290aEZhY3RvciI6IDEuMCwgInN0cm9rZSI6IHRydWUsICJ3ZWlnaHQiOiAzfQogICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfNmZhY2E5MmQ1MWZiNGIzYjllZjkwYzM1ODU4M2Y0MzUpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIHBvcHVwXzVlYzdiMjYzYWY3MDQ2M2ZiMGVlYWEzYzk3MGI5NTY2ID0gTC5wb3B1cCh7Im1heFdpZHRoIjogIjEwMCUifSk7CgogICAgICAgIAogICAgICAgICAgICB2YXIgaHRtbF83ZjMxNTc3MDI0MmY0ZjViOWNmODc3ZGU4NjY0OTM0NCA9ICQoYDxkaXYgaWQ9Imh0bWxfN2YzMTU3NzAyNDJmNGY1YjljZjg3N2RlODY2NDkzNDQiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPjx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIHRhYmxlLWhvdmVyIj48dHI+PHRoPmRpcmVjdGlvbl9pZDwvdGg+PHRkPjwvdGQ+PC90cj48dHI+PHRoPnJvdXRlX2lkPC90aD48dGQ+MTkyPC90ZD48L3RyPjx0cj48dGg+c2VydmljZV9pZDwvdGg+PHRkPjE8L3RkPjwvdHI+PHRyPjx0aD5zaGFwZV9pZDwvdGg+PHRkPnNoYXBlXzAyMDwvdGQ+PC90cj48dHI+PHRoPnRyaXBfaGVhZHNpZ248L3RoPjx0ZD4gT3R4YXJrb2FnYTwvdGQ+PC90cj48dHI+PHRoPnRyaXBfaWQ8L3RoPjx0ZD40MDkyODU8L3RkPjwvdHI+PC90YWJsZT48L2Rpdj5gKVswXTsKICAgICAgICAgICAgcG9wdXBfNWVjN2IyNjNhZjcwNDYzZmIwZWVhYTNjOTcwYjk1NjYuc2V0Q29udGVudChodG1sXzdmMzE1NzcwMjQyZjRmNWI5Y2Y4NzdkZTg2NjQ5MzQ0KTsKICAgICAgICAKCiAgICAgICAgcG9seV9saW5lX2U5YjUyMzg4NTUxYjRiYzU4ZjMxNDM4NDkwNjFmM2M5LmJpbmRQb3B1cChwb3B1cF81ZWM3YjI2M2FmNzA0NjNmYjBlZWFhM2M5NzBiOTU2NikKICAgICAgICA7CgogICAgICAgIAogICAgCiAgICAKICAgICAgICAgICAgdmFyIGZlYXR1cmVfZ3JvdXBfMTNiZmViYTI0OTQ3NDVhNzhmZmZmNzE2NDFjNGRlMjQgPSBMLmZlYXR1cmVHcm91cCgKICAgICAgICAgICAgICAgIHt9CiAgICAgICAgICAgICkuYWRkVG8obWFwXzM2OGE4NzlkOTM3ZTQ1NjZhMmU1YTY1NjExMmY5ZGIxKTsKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9seV9saW5lXzhkYmU4OTBkOGU3NjQzOWNhMDA0MTJmYWExMjkxNjBiID0gTC5wb2x5bGluZSgKICAgICAgICAgICAgICAgIFtbNDMuMjg0MDU2MTY2NDE3NTcsIC0yLjk2NTQ0MzE0MTQ0ODg1Nl0sIFs0My4yODE3MzE3Mjk2MjMwNTQsIC0yLjk2MzAyNTEyNDA1MjExMDRdLCBbNDMuMjc5NDA0OTE2MjU2NDUsIC0yLjk2MTczNzkxOTg0MTYyODVdLCBbNDMuMjc3NzA5MjI2MDA4MzUsIC0yLjk2MDc5MjY0NTkwMTI1N10sIFs0My4yNzU4NzIxMjM4MzEwMiwgLTIuOTU5NzY0OTM3ODI4NjEzN10sIFs0My4yNzM3NjkyMjM3MjM0MzQsIC0yLjk1NzU0ODE4OTAzMzQ1NzRdLCBbNDMuMjcyNzEwNDIyMzU5NjUsIC0yLjk1NTQzNTEyMjQzMjUzM10sIFs0My4yNzE5MjU0OTgwMDkwMjYsIC0yLjk1MDA5NjM0NjEwMDM5OTddLCBbNDMuMjcxNzE2NTQ3MDg3NzA2LCAtMi45NDQ5MzU5MjQ2NzYzMzZdLCBbNDMuMjcwOTQ2Njg1Njk1OTc1LCAtMi45NDE1NDI4OTg4NDY2NTNdLCBbNDMuMjY3ODExOTU3ODQ2NzIsIC0yLjkzOTcyOTQ5OTI4OTcwM10sIFs0My4yNjU0Nzc0Njg1MDE4NjQsIC0yLjkzNjgwMDAwOTk1NTQ4NDNdLCBbNDMuMjYyODgzMjk0MTk3OTcsIC0yLjkzNTYzNzUxNzMwMDk2OV0sIFs0My4yNjI2OTA3NjE5NzcwMywgLTIuOTMzNzUwOTk2NDMxNTU5XSwgWzQzLjI2MTUyOTk0NjQwMDE3NCwgLTIuOTI4NDc2NTgwODg0NjUxM10sIFs0My4yNjE0Nzg4OTAwNjA5ODUsIC0yLjkyNzgyNzg1Njg1MTI4ODhdXSwKICAgICAgICAgICAgICAgIHsiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsICJjb2xvciI6ICIjYTZkODU0IiwgImRhc2hBcnJheSI6IG51bGwsICJkYXNoT2Zmc2V0IjogbnVsbCwgImZpbGwiOiBmYWxzZSwgImZpbGxDb2xvciI6ICIjYTZkODU0IiwgImZpbGxPcGFjaXR5IjogMC4yLCAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsICJsaW5lQ2FwIjogInJvdW5kIiwgImxpbmVKb2luIjogInJvdW5kIiwgIm5vQ2xpcCI6IGZhbHNlLCAib3BhY2l0eSI6IDEuMCwgInNtb290aEZhY3RvciI6IDEuMCwgInN0cm9rZSI6IHRydWUsICJ3ZWlnaHQiOiAzfQogICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMTNiZmViYTI0OTQ3NDVhNzhmZmZmNzE2NDFjNGRlMjQpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIHBvcHVwX2E0ODY5ZTIyZTBkYTQ0MjI5NDIwOWJiMDhiNTE3ZGUxID0gTC5wb3B1cCh7Im1heFdpZHRoIjogIjEwMCUifSk7CgogICAgICAgIAogICAgICAgICAgICB2YXIgaHRtbF82NDMyYzE2NDMyYWQ0MTJmYWUzNTYxZmEyOTA2MzA4NSA9ICQoYDxkaXYgaWQ9Imh0bWxfNjQzMmMxNjQzMmFkNDEyZmFlMzU2MWZhMjkwNjMwODUiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPjx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIHRhYmxlLWhvdmVyIj48dHI+PHRoPmRpcmVjdGlvbl9pZDwvdGg+PHRkPjwvdGQ+PC90cj48dHI+PHRoPnJvdXRlX2lkPC90aD48dGQ+MTkzPC90ZD48L3RyPjx0cj48dGg+c2VydmljZV9pZDwvdGg+PHRkPjE8L3RkPjwvdHI+PHRyPjx0aD5zaGFwZV9pZDwvdGg+PHRkPnNoYXBlXzAwMzwvdGQ+PC90cj48dHI+PHRoPnRyaXBfaGVhZHNpZ248L3RoPjx0ZD4gUGxhemEgQmlyaWJpbGE8L3RkPjwvdHI+PHRyPjx0aD50cmlwX2lkPC90aD48dGQ+NDEzMjQyPC90ZD48L3RyPjwvdGFibGU+PC9kaXY+YClbMF07CiAgICAgICAgICAgIHBvcHVwX2E0ODY5ZTIyZTBkYTQ0MjI5NDIwOWJiMDhiNTE3ZGUxLnNldENvbnRlbnQoaHRtbF82NDMyYzE2NDMyYWQ0MTJmYWUzNTYxZmEyOTA2MzA4NSk7CiAgICAgICAgCgogICAgICAgIHBvbHlfbGluZV84ZGJlODkwZDhlNzY0MzljYTAwNDEyZmFhMTI5MTYwYi5iaW5kUG9wdXAocG9wdXBfYTQ4NjllMjJlMGRhNDQyMjk0MjA5YmIwOGI1MTdkZTEpCiAgICAgICAgOwoKICAgICAgICAKICAgIAogICAgCiAgICAgICAgICAgIHZhciBmZWF0dXJlX2dyb3VwX2U5NWQyYTAzOGMxNDQ0MzRiMjY3NDA5MDU2YjFhOWNkID0gTC5mZWF0dXJlR3JvdXAoCiAgICAgICAgICAgICAgICB7fQogICAgICAgICAgICApLmFkZFRvKG1hcF8zNjhhODc5ZDkzN2U0NTY2YTJlNWE2NTYxMTJmOWRiMSk7CiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvbHlfbGluZV82ZWMxYTdlNjhhNTc0MDkxOGYxNTA2ZjU1Y2VjMjVkMCA9IEwucG9seWxpbmUoCiAgICAgICAgICAgICAgICBbWzQzLjI2MTQ3ODg5MDA2MDk4NSwgLTIuOTI3ODI3ODU2ODUxMjg4OF0sIFs0My4yNjI3MDk4NjczOTA5NywgLTIuOTMzNDU3MjM4NzAyMTU3NF0sIFs0My4yNjM5MzA5OTA4NzgzMzYsIC0yLjkzNTU1NjkzNjU1NTUxM10sIFs0My4yNjU4NjQ3MzYxNzM4MywgLTIuOTM2OTgyMjA4NDY4MzIxN10sIFs0My4yNjc1NzYzMjE1NjgxODUsIC0yLjkzOTM3MDA1NjYyMDQ1Nl0sIFs0My4yNzEwMjYwMjQyMTUwMDQsIC0yLjk0MTIzOTg3ODY2NjQ0NV0sIFs0My4yNzE5NDc4MDYwNzU0NywgLTIuOTQ1MDg1Mzk1NzcyMjU0N10sIFs0My4yNzIxMjE1NzU0Nzk0OSwgLTIuOTUwNTk0MjA4NzM2MjkxNV0sIFs0My4yNzMzMDQ5MjgwMjI2LCAtMi45NTUzMzQ4MzE1MTMxOTEzXSwgWzQzLjI3NDcxOTYxNDAzNjU2LCAtMi45NTg1ODk1NzE0NTIyMTEyXSwgWzQzLjI3Njc3NjAxNTM1MjA1NiwgLTIuOTYwMDU2MTA1MTAyMzUzN10sIFs0My4yNzg4MzMzNTIwOTQ4NCwgLTIuOTYxMTk0NDA4MDM5ODQzNl0sIFs0My4yODE3MDUzMDI5NDA3MTUsIC0yLjk2MjgxMjg1MzU0Nzg5N10sIFs0My4yODM3OTczMzU3NzYzNTYsIC0yLjk2MjU5NjExNDU0Nzk3MDddLCBbNDMuMjg0MDU2MTY2NDE3NTcsIC0yLjk2NTQ0MzE0MTQ0ODg1Nl1dLAogICAgICAgICAgICAgICAgeyJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwgImNvbG9yIjogIiNmZmQ5MmYiLCAiZGFzaEFycmF5IjogbnVsbCwgImRhc2hPZmZzZXQiOiBudWxsLCAiZmlsbCI6IGZhbHNlLCAiZmlsbENvbG9yIjogIiNmZmQ5MmYiLCAiZmlsbE9wYWNpdHkiOiAwLjIsICJmaWxsUnVsZSI6ICJldmVub2RkIiwgImxpbmVDYXAiOiAicm91bmQiLCAibGluZUpvaW4iOiAicm91bmQiLCAibm9DbGlwIjogZmFsc2UsICJvcGFjaXR5IjogMS4wLCAic21vb3RoRmFjdG9yIjogMS4wLCAic3Ryb2tlIjogdHJ1ZSwgIndlaWdodCI6IDN9CiAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9lOTVkMmEwMzhjMTQ0NDM0YjI2NzQwOTA1NmIxYTljZCk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgcG9wdXBfZTFjMjcwMDFmMmEwNGJiNWI5MGZmYjcxMDIxM2FhYmMgPSBMLnBvcHVwKHsibWF4V2lkdGgiOiAiMTAwJSJ9KTsKCiAgICAgICAgCiAgICAgICAgICAgIHZhciBodG1sXzJiMDUxNjgzYmIwYTQwZmZiODM3OTAxNzY4YmY3ZDI5ID0gJChgPGRpdiBpZD0iaHRtbF8yYjA1MTY4M2JiMGE0MGZmYjgzNzkwMTc2OGJmN2QyOSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+PHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQgdGFibGUtaG92ZXIiPjx0cj48dGg+ZGlyZWN0aW9uX2lkPC90aD48dGQ+PC90ZD48L3RyPjx0cj48dGg+cm91dGVfaWQ8L3RoPjx0ZD4xOTQ8L3RkPjwvdHI+PHRyPjx0aD5zZXJ2aWNlX2lkPC90aD48dGQ+MTwvdGQ+PC90cj48dHI+PHRoPnNoYXBlX2lkPC90aD48dGQ+c2hhcGVfMDk0PC90ZD48L3RyPjx0cj48dGg+dHJpcF9oZWFkc2lnbjwvdGg+PHRkPiBQbGF6YSBCaXJpYmlsYTwvdGQ+PC90cj48dHI+PHRoPnRyaXBfaWQ8L3RoPjx0ZD40MTMzODg8L3RkPjwvdHI+PC90YWJsZT48L2Rpdj5gKVswXTsKICAgICAgICAgICAgcG9wdXBfZTFjMjcwMDFmMmEwNGJiNWI5MGZmYjcxMDIxM2FhYmMuc2V0Q29udGVudChodG1sXzJiMDUxNjgzYmIwYTQwZmZiODM3OTAxNzY4YmY3ZDI5KTsKICAgICAgICAKCiAgICAgICAgcG9seV9saW5lXzZlYzFhN2U2OGE1NzQwOTE4ZjE1MDZmNTVjZWMyNWQwLmJpbmRQb3B1cChwb3B1cF9lMWMyNzAwMWYyYTA0YmI1YjkwZmZiNzEwMjEzYWFiYykKICAgICAgICA7CgogICAgICAgIAogICAgCiAgICAKICAgICAgICAgICAgdmFyIGZlYXR1cmVfZ3JvdXBfNmMwOTU1YWMxOGE4NDkzOGEwMjM3MzgxOWFhNjUzOWEgPSBMLmZlYXR1cmVHcm91cCgKICAgICAgICAgICAgICAgIHt9CiAgICAgICAgICAgICkuYWRkVG8obWFwXzM2OGE4NzlkOTM3ZTQ1NjZhMmU1YTY1NjExMmY5ZGIxKTsKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9seV9saW5lX2M4NGRjOTVlZmQ4NDQ2MjQ4NmFjZDJhOGMxNTRjZTlkID0gTC5wb2x5bGluZSgKICAgICAgICAgICAgICAgIFtbNDMuMjcwNjUwNzM2NDgyMjMsIC0yLjk1NjUyNDQ5MDkzMzY3MDVdLCBbNDMuMjcwNjkzOTg2MzUyNzUsIC0yLjk1NDkxNjUzODcyMDA4NzVdLCBbNDMuMjcxMjkxNDA0OTYxOTMsIC0yLjk1MjYwNTE2MzY1NjkxNl0sIFs0My4yNzE5MjU0OTgwMDkwMjYsIC0yLjk1MDA5NjM0NjEwMDM5OTddLCBbNDMuMjcwNjExODQ4NDM0MjUsIC0yLjk0NzM5MDc1MTY2OTIyMTVdLCBbNDMuMjY4NzA4Mjc3MDk4NjUsIC0yLjk0NzIzOTI0NDU4MTg5MDVdLCBbNDMuMjY5MTY2NDc1Mjk0Mjg0LCAtMi45NDM2MTc1ODc0MDcwNTZdLCBbNDMuMjY5NzYxMTg0NzcwMjgsIC0yLjk0MDcxOTkwMDUwNTQzNl0sIFs0My4yNzAxODEyNzk4MDU4OCwgLTIuOTM3Mjc0MDY1MjcxMDA0NV0sIFs0My4yNjk2ODAxMTIwNjY3OTQsIC0yLjkzMTM4MzA2MjgyNTQyNjVdLCBbNDMuMjY2NDM0OTAzODkxMzUsIC0yLjkyNjgyODE1MDA3NTM3M10sIFs0My4yNjQ0OTIxMzE2MDA2MSwgLTIuOTI0NTA2MDc1ODM0MzAzM10sIFs0My4yNjI4NDUxMjExMjIxMDUsIC0yLjkyMzA1OTE0MzM5OTg2MTZdLCBbNDMuMjYwNDExNTY5MTE0ODQ0LCAtMi45MjI5MzYxOTIyNTc1NDA1XSwgWzQzLjI1NzA5MDM0MjUzMzA3NSwgLTIuOTI3MTI5Mjk1MDc3OTIzN10sIFs0My4yNTQwODg0Nzk0MjQxMDUsIC0yLjkyNTA4MDM2ODg0MDg3MDZdLCBbNDMuMjU0NzczMDc3NzUxNTIsIC0yLjkyNjc0Mzg5NDM0MzA3NDRdLCBbNDMuMjU1MDI5MjYyODI1NzQ0LCAtMi45MjI1NTc3MjQ2MTc3MjZdXSwKICAgICAgICAgICAgICAgIHsiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsICJjb2xvciI6ICIjZTVjNDk0IiwgImRhc2hBcnJheSI6IG51bGwsICJkYXNoT2Zmc2V0IjogbnVsbCwgImZpbGwiOiBmYWxzZSwgImZpbGxDb2xvciI6ICIjZTVjNDk0IiwgImZpbGxPcGFjaXR5IjogMC4yLCAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsICJsaW5lQ2FwIjogInJvdW5kIiwgImxpbmVKb2luIjogInJvdW5kIiwgIm5vQ2xpcCI6IGZhbHNlLCAib3BhY2l0eSI6IDEuMCwgInNtb290aEZhY3RvciI6IDEuMCwgInN0cm9rZSI6IHRydWUsICJ3ZWlnaHQiOiAzfQogICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfNmMwOTU1YWMxOGE4NDkzOGEwMjM3MzgxOWFhNjUzOWEpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIHBvcHVwXzIwZjZhYzZiZjhjYjQyZjY5MjEzNTIwYWJiNzU2ZGIzID0gTC5wb3B1cCh7Im1heFdpZHRoIjogIjEwMCUifSk7CgogICAgICAgIAogICAgICAgICAgICB2YXIgaHRtbF81MTE2MjM1YzBhZDU0OWI5OWJkNTJlM2JiZjY2OWI3YiA9ICQoYDxkaXYgaWQ9Imh0bWxfNTExNjIzNWMwYWQ1NDliOTliZDUyZTNiYmY2NjliN2IiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPjx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIHRhYmxlLWhvdmVyIj48dHI+PHRoPmRpcmVjdGlvbl9pZDwvdGg+PHRkPjwvdGQ+PC90cj48dHI+PHRoPnJvdXRlX2lkPC90aD48dGQ+MTk1PC90ZD48L3RyPjx0cj48dGg+c2VydmljZV9pZDwvdGg+PHRkPjE8L3RkPjwvdHI+PHRyPjx0aD5zaGFwZV9pZDwvdGg+PHRkPnNoYXBlXzAwNTwvdGQ+PC90cj48dHI+PHRoPnRyaXBfaGVhZHNpZ248L3RoPjx0ZD4gQXR4dXJpPC90ZD48L3RyPjx0cj48dGg+dHJpcF9pZDwvdGg+PHRkPjQyNDk4NjwvdGQ+PC90cj48L3RhYmxlPjwvZGl2PmApWzBdOwogICAgICAgICAgICBwb3B1cF8yMGY2YWM2YmY4Y2I0MmY2OTIxMzUyMGFiYjc1NmRiMy5zZXRDb250ZW50KGh0bWxfNTExNjIzNWMwYWQ1NDliOTliZDUyZTNiYmY2NjliN2IpOwogICAgICAgIAoKICAgICAgICBwb2x5X2xpbmVfYzg0ZGM5NWVmZDg0NDYyNDg2YWNkMmE4YzE1NGNlOWQuYmluZFBvcHVwKHBvcHVwXzIwZjZhYzZiZjhjYjQyZjY5MjEzNTIwYWJiNzU2ZGIzKQogICAgICAgIDsKCiAgICAgICAgCiAgICAKICAgIAogICAgICAgICAgICB2YXIgZmVhdHVyZV9ncm91cF82ZGMzNzZmZWI0NzU0N2NmOGU0NTY4NjM1ZDNjNzIxZCA9IEwuZmVhdHVyZUdyb3VwKAogICAgICAgICAgICAgICAge30KICAgICAgICAgICAgKS5hZGRUbyhtYXBfMzY4YTg3OWQ5MzdlNDU2NmEyZTVhNjU2MTEyZjlkYjEpOwogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb2x5X2xpbmVfNGFmNWM0M2U1ZmU5NGEzZDk1Y2RlNzZmYjg3MGQyNGIgPSBMLnBvbHlsaW5lKAogICAgICAgICAgICAgICAgW1s0My4yNTUwMjkyNjI4MjU3NDQsIC0yLjkyMjU1NzcyNDYxNzcyNl0sIFs0My4yNTY1OTYzMTQ4MTMzODYsIC0yLjkyNTcwNzkwNDcwOTQ1NDVdLCBbNDMuMjYwNDIwNjk3NjQ2MTU0LCAtMi45MjI3NTUzODI5MDc4NDU0XSwgWzQzLjI2MzkzODc1OTE4MDg4LCAtMi45MjM1NzkwODA0ODA3MjI3XSwgWzQzLjI2NjgzMDEyNjg3MjE4NiwgLTIuOTI3MjM2MDkzMTA1NjE4NV0sIFs0My4yNjkyMjY0MTE4MTI2NDYsIC0yLjkzMDMzNjUxNTYzMjcwOF0sIFs0My4yNzAyMjQzNDAwNzYwNTUsIC0yLjkzNzYwNDkwNDA5Nzc5Ml0sIFs0My4yNjk5ODIyMTU5NjMwMSwgLTIuOTQwMzI1NTExNDY2OTY3NV0sIFs0My4yNjkyNjQ5NDAxMjQzNiwgLTIuOTQzNjY1ODg4ODIyNzg0XSwgWzQzLjI3MDA3NDc3MjgzMzUxLCAtMi45NDY5NzEyNTgyMTE4MzMzXSwgWzQzLjI2OTgyNTU4ODEyNjEsIC0yLjk1MTgxNDE3MTg3NjM1MzNdLCBbNDMuMjcwNzg0MTI0NTE3MTg1LCAtMi45NTQ1MDUwNDM4MzE3NjM3XSwgWzQzLjI3MDcxNDEwMTI2MjM3LCAtMi45NTY4NDM4OTE5MDk4NjE2XSwgWzQzLjI3MDY1MDczNjQ4MjIzLCAtMi45NTY1MjQ0OTA5MzM2NzA1XV0sCiAgICAgICAgICAgICAgICB7ImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLCAiY29sb3IiOiAiI2IzYjNiMyIsICJkYXNoQXJyYXkiOiBudWxsLCAiZGFzaE9mZnNldCI6IG51bGwsICJmaWxsIjogZmFsc2UsICJmaWxsQ29sb3IiOiAiI2IzYjNiMyIsICJmaWxsT3BhY2l0eSI6IDAuMiwgImZpbGxSdWxlIjogImV2ZW5vZGQiLCAibGluZUNhcCI6ICJyb3VuZCIsICJsaW5lSm9pbiI6ICJyb3VuZCIsICJub0NsaXAiOiBmYWxzZSwgIm9wYWNpdHkiOiAxLjAsICJzbW9vdGhGYWN0b3IiOiAxLjAsICJzdHJva2UiOiB0cnVlLCAid2VpZ2h0IjogM30KICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzZkYzM3NmZlYjQ3NTQ3Y2Y4ZTQ1Njg2MzVkM2M3MjFkKTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBwb3B1cF8zNTc2YTY0ODlhMjg0YWJmYjNmOWVmYzU2ODkzZDYzYyA9IEwucG9wdXAoeyJtYXhXaWR0aCI6ICIxMDAlIn0pOwoKICAgICAgICAKICAgICAgICAgICAgdmFyIGh0bWxfOTllYmY4YzZlY2RjNDYxNDljM2QyNzQ2ZTE2MTI4YzUgPSAkKGA8ZGl2IGlkPSJodG1sXzk5ZWJmOGM2ZWNkYzQ2MTQ5YzNkMjc0NmUxNjEyOGM1IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij48dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCB0YWJsZS1ob3ZlciI+PHRyPjx0aD5kaXJlY3Rpb25faWQ8L3RoPjx0ZD48L3RkPjwvdHI+PHRyPjx0aD5yb3V0ZV9pZDwvdGg+PHRkPjE5NjwvdGQ+PC90cj48dHI+PHRoPnNlcnZpY2VfaWQ8L3RoPjx0ZD4xPC90ZD48L3RyPjx0cj48dGg+c2hhcGVfaWQ8L3RoPjx0ZD5zaGFwZV8wMzg8L3RkPjwvdHI+PHRyPjx0aD50cmlwX2hlYWRzaWduPC90aD48dGQ+IEF0eHVyaTwvdGQ+PC90cj48dHI+PHRoPnRyaXBfaWQ8L3RoPjx0ZD40MjUwNTE8L3RkPjwvdHI+PC90YWJsZT48L2Rpdj5gKVswXTsKICAgICAgICAgICAgcG9wdXBfMzU3NmE2NDg5YTI4NGFiZmIzZjllZmM1Njg5M2Q2M2Muc2V0Q29udGVudChodG1sXzk5ZWJmOGM2ZWNkYzQ2MTQ5YzNkMjc0NmUxNjEyOGM1KTsKICAgICAgICAKCiAgICAgICAgcG9seV9saW5lXzRhZjVjNDNlNWZlOTRhM2Q5NWNkZTc2ZmI4NzBkMjRiLmJpbmRQb3B1cChwb3B1cF8zNTc2YTY0ODlhMjg0YWJmYjNmOWVmYzU2ODkzZDYzYykKICAgICAgICA7CgogICAgICAgIAogICAgCiAgICAKICAgICAgICAgICAgdmFyIGZlYXR1cmVfZ3JvdXBfYjhlMTllZjBmODFkNDM0NWExZmZlNDJjM2Y0OGE4OTIgPSBMLmZlYXR1cmVHcm91cCgKICAgICAgICAgICAgICAgIHt9CiAgICAgICAgICAgICkuYWRkVG8obWFwXzM2OGE4NzlkOTM3ZTQ1NjZhMmU1YTY1NjExMmY5ZGIxKTsKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9seV9saW5lX2RmNzk5MWJkN2RlNjRiZDViYTJlNDRiMWYwMDI3N2RkID0gTC5wb2x5bGluZSgKICAgICAgICAgICAgICAgIFtbNDMuMjgxNzMxNzI5NjIzMDU0LCAtMi45NjMwMjUxMjQwNTIxMTA0XSwgWzQzLjI3OTQwNDkxNjI1NjQ1LCAtMi45NjE3Mzc5MTk4NDE2Mjg1XSwgWzQzLjI3NzcwOTIyNjAwODM1LCAtMi45NjA3OTI2NDU5MDEyNTddLCBbNDMuMjc1ODcyMTIzODMxMDIsIC0yLjk1OTc2NDkzNzgyODYxMzddLCBbNDMuMjczNzY5MjIzNzIzNDM0LCAtMi45NTc1NDgxODkwMzM0NTc0XSwgWzQzLjI3MjcxMDQyMjM1OTY1LCAtMi45NTU0MzUxMjI0MzI1MzNdLCBbNDMuMjcxOTI1NDk4MDA5MDI2LCAtMi45NTAwOTYzNDYxMDAzOTk3XSwgWzQzLjI3MTcxNjU0NzA4NzcwNiwgLTIuOTQ0OTM1OTI0Njc2MzM2XSwgWzQzLjI3MDk0NjY4NTY5NTk3NSwgLTIuOTQxNTQyODk4ODQ2NjUzXSwgWzQzLjI2NzgxMTk1Nzg0NjcyLCAtMi45Mzk3Mjk0OTkyODk3MDNdLCBbNDMuMjY1NDc3NDY4NTAxODY0LCAtMi45MzY4MDAwMDk5NTU0ODQzXSwgWzQzLjI2Mjg4MzI5NDE5Nzk3LCAtMi45MzU2Mzc1MTczMDA5NjldLCBbNDMuMjYzNjI5NjMxODM5MDMsIC0yLjkzNDU4Njg5MDE2MTIzOV0sIFs0My4yNjY2OTEyOTkxMDU2MiwgLTIuOTMzMzM5OTczOTMwMTY4N10sIFs0My4yNjk2Njg2MTMzODM3MywgLTIuOTIyNDc5MjE0NDc4Mzc2NF0sIFs0My4yNjc2NDE0MTAyNDcwNiwgLTIuOTE4NDI2NjI0NzUxOTkyXSwgWzQzLjI2NTUzMDgyMTgxNzY1NiwgLTIuOTE2ODc4MDY3MzIwNjI4XSwgWzQzLjI2MDc4NTE3ODMyNTU1LCAtMi45MTQ4MDQ0NTQxOTYwMTgzXSwgWzQzLjI1Njg2MTMzODY2NDA0NSwgLTIuOTExOTkyOTM3NjY1OTQwNl0sIFs0My4yNTU2NTQ5NzI3NjkzLCAtMi45MTA4MjYzMjY2NTc5MDM1XSwgWzQzLjI0OTU1NjIyNTk1MDgxLCAtMi45MDg0MDE2MDAwMTYwNzhdLCBbNDMuMjUwMzg1NDMyMzA2OTU2LCAtMi45MTA2NjA1MDYyMDEzNzMzXSwgWzQzLjI0ODgzMzQ4MDg2ODg0NiwgLTIuOTA5MzQ3MDIzODU1NDMzNV0sIFs0My4yNDk4OTYwNzUwNTQzMiwgLTIuOTA4NjAzNTExMTkzOTIxXSwgWzQzLjI0ODY3MTEzODk1ODU4NSwgLTIuOTA2OTI3ODc1MjMwMDQ0XSwgWzQzLjI1MDcyMjgyNDczOTYsIC0yLjkwMzMyODY5NzQ4Njc4MjddLCBbNDMuMjUyNTYxOTM5Mjc3NjksIC0yLjkwMjMzNzA2MzEwODE5NTNdLCBbNDMuMjU1MDQ1MTY2ODQzMDU0LCAtMi45MDA5ODc5ODYzMjkyMzIzXV0sCiAgICAgICAgICAgICAgICB7ImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLCAiY29sb3IiOiAiIzY2YzJhNSIsICJkYXNoQXJyYXkiOiBudWxsLCAiZGFzaE9mZnNldCI6IG51bGwsICJmaWxsIjogZmFsc2UsICJmaWxsQ29sb3IiOiAiIzY2YzJhNSIsICJmaWxsT3BhY2l0eSI6IDAuMiwgImZpbGxSdWxlIjogImV2ZW5vZGQiLCAibGluZUNhcCI6ICJyb3VuZCIsICJsaW5lSm9pbiI6ICJyb3VuZCIsICJub0NsaXAiOiBmYWxzZSwgIm9wYWNpdHkiOiAxLjAsICJzbW9vdGhGYWN0b3IiOiAxLjAsICJzdHJva2UiOiB0cnVlLCAid2VpZ2h0IjogM30KICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2I4ZTE5ZWYwZjgxZDQzNDVhMWZmZTQyYzNmNDhhODkyKTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBwb3B1cF9mNmMwZTA2MDU3Njk0MjQyOWMyOTkwNzg2MzcyMWY1MyA9IEwucG9wdXAoeyJtYXhXaWR0aCI6ICIxMDAlIn0pOwoKICAgICAgICAKICAgICAgICAgICAgdmFyIGh0bWxfMjAzMDIyMzYyZWQ4NGExNmIzNjExNTE2YjkzYjkxZDMgPSAkKGA8ZGl2IGlkPSJodG1sXzIwMzAyMjM2MmVkODRhMTZiMzYxMTUxNmI5M2I5MWQzIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij48dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCB0YWJsZS1ob3ZlciI+PHRyPjx0aD5kaXJlY3Rpb25faWQ8L3RoPjx0ZD48L3RkPjwvdHI+PHRyPjx0aD5yb3V0ZV9pZDwvdGg+PHRkPjE5NzwvdGQ+PC90cj48dHI+PHRoPnNlcnZpY2VfaWQ8L3RoPjx0ZD4xPC90ZD48L3RyPjx0cj48dGg+c2hhcGVfaWQ8L3RoPjx0ZD5zaGFwZV8wMDE8L3RkPjwvdHI+PHRyPjx0aD50cmlwX2hlYWRzaWduPC90aD48dGQ+IFR4dXJkaW5hZ2E8L3RkPjwvdHI+PHRyPjx0aD50cmlwX2lkPC90aD48dGQ+NDA4MzI4PC90ZD48L3RyPjwvdGFibGU+PC9kaXY+YClbMF07CiAgICAgICAgICAgIHBvcHVwX2Y2YzBlMDYwNTc2OTQyNDI5YzI5OTA3ODYzNzIxZjUzLnNldENvbnRlbnQoaHRtbF8yMDMwMjIzNjJlZDg0YTE2YjM2MTE1MTZiOTNiOTFkMyk7CiAgICAgICAgCgogICAgICAgIHBvbHlfbGluZV9kZjc5OTFiZDdkZTY0YmQ1YmEyZTQ0YjFmMDAyNzdkZC5iaW5kUG9wdXAocG9wdXBfZjZjMGUwNjA1NzY5NDI0MjljMjk5MDc4NjM3MjFmNTMpCiAgICAgICAgOwoKICAgICAgICAKICAgIAogICAgCiAgICAgICAgICAgIHZhciBmZWF0dXJlX2dyb3VwXzU4MTY1ZGJhNDJkNTRlNTI5MGJlOTg5MzY4NjkwZGRlID0gTC5mZWF0dXJlR3JvdXAoCiAgICAgICAgICAgICAgICB7fQogICAgICAgICAgICApLmFkZFRvKG1hcF8zNjhhODc5ZDkzN2U0NTY2YTJlNWE2NTYxMTJmOWRiMSk7CiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvbHlfbGluZV85MjliMmE4ZGViMjI0NjBjOGU3NTE4YTM0YTU4MTE4MyA9IEwucG9seWxpbmUoCiAgICAgICAgICAgICAgICBbWzQzLjI1NTA0NTE2Njg0MzA1NCwgLTIuOTAwOTg3OTg2MzI5MjMyM10sIFs0My4yNTYzMDMyMjI0NzYwNCwgLTIuOTAzODI3NTE5NTg3MzI5M10sIFs0My4yNTcwMzU1NTM1ODA1OCwgLTIuOTA2ODUyODQ1NDA1NzMxNF0sIFs0My4yNTc5NzUzNjQ3MzM0NTQsIC0yLjkxMDk1MTA4NDA1MjQ0OTNdLCBbNDMuMjYwNjU4MTQyOTQ3NTksIC0yLjkxMjU5NDY0MzM4ODA4OF0sIFs0My4yNjE1MzEwMDIwNjU0MSwgLTIuOTE1Mjc0MjY3NTQ0NDQ2N10sIFs0My4yNjU1MTM2NDMxMDg0NiwgLTIuOTE2NjgzMTA5MDc4MTY4XSwgWzQzLjI2NzgzMDM3MDM4OTU3NSwgLTIuOTE4NDM0ODUwMTgxOTkxNF0sIFs0My4yNjk4MzEzNzE0ODQ5MjYsIC0yLjkyMjU3Mjg0NTUxNzUwNzddLCBbNDMuMjcwMDgzODk0NzkwMjA0LCAtMi45MjYwMDM1NjIxMjI4NzMzXSwgWzQzLjI2NjA4NDkwNzYxNTkyLCAtMi45MzM3MDU4MzQ2MDc2NjYzXSwgWzQzLjI2MzkzMDk5MDg3ODMzNiwgLTIuOTM1NTU2OTM2NTU1NTEzXSwgWzQzLjI2NTg2NDczNjE3MzgzLCAtMi45MzY5ODIyMDg0NjgzMjE3XSwgWzQzLjI2NzU3NjMyMTU2ODE4NSwgLTIuOTM5MzcwMDU2NjIwNDU2XSwgWzQzLjI3MTAyNjAyNDIxNTAwNCwgLTIuOTQxMjM5ODc4NjY2NDQ1XSwgWzQzLjI3MTk0NzgwNjA3NTQ3LCAtMi45NDUwODUzOTU3NzIyNTQ3XSwgWzQzLjI3MjEyMTU3NTQ3OTQ5LCAtMi45NTA1OTQyMDg3MzYyOTE1XSwgWzQzLjI3MzMwNDkyODAyMjYsIC0yLjk1NTMzNDgzMTUxMzE5MTNdLCBbNDMuMjc0NzE5NjE0MDM2NTYsIC0yLjk1ODU4OTU3MTQ1MjIxMTJdLCBbNDMuMjc2Nzc2MDE1MzUyMDU2LCAtMi45NjAwNTYxMDUxMDIzNTM3XSwgWzQzLjI3ODgzMzM1MjA5NDg0LCAtMi45NjExOTQ0MDgwMzk4NDM2XSwgWzQzLjI4MTcwNTMwMjk0MDcxNSwgLTIuOTYyODEyODUzNTQ3ODk3XSwgWzQzLjI4MTczMTcyOTYyMzA1NCwgLTIuOTYzMDI1MTI0MDUyMTEwNF1dLAogICAgICAgICAgICAgICAgeyJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwgImNvbG9yIjogIiNmYzhkNjIiLCAiZGFzaEFycmF5IjogbnVsbCwgImRhc2hPZmZzZXQiOiBudWxsLCAiZmlsbCI6IGZhbHNlLCAiZmlsbENvbG9yIjogIiNmYzhkNjIiLCAiZmlsbE9wYWNpdHkiOiAwLjIsICJmaWxsUnVsZSI6ICJldmVub2RkIiwgImxpbmVDYXAiOiAicm91bmQiLCAibGluZUpvaW4iOiAicm91bmQiLCAibm9DbGlwIjogZmFsc2UsICJvcGFjaXR5IjogMS4wLCAic21vb3RoRmFjdG9yIjogMS4wLCAic3Ryb2tlIjogdHJ1ZSwgIndlaWdodCI6IDN9CiAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF81ODE2NWRiYTQyZDU0ZTUyOTBiZTk4OTM2ODY5MGRkZSk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgcG9wdXBfM2Q5NGNiYjFkYmRmNDZmNzhmZTQxMjQ1OGEzMTA2ZjYgPSBMLnBvcHVwKHsibWF4V2lkdGgiOiAiMTAwJSJ9KTsKCiAgICAgICAgCiAgICAgICAgICAgIHZhciBodG1sXzlkNDcxNmYyODczZTQyZWNiZDkwYjIxMzhlYjk1MTk2ID0gJChgPGRpdiBpZD0iaHRtbF85ZDQ3MTZmMjg3M2U0MmVjYmQ5MGIyMTM4ZWI5NTE5NiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+PHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQgdGFibGUtaG92ZXIiPjx0cj48dGg+ZGlyZWN0aW9uX2lkPC90aD48dGQ+PC90ZD48L3RyPjx0cj48dGg+cm91dGVfaWQ8L3RoPjx0ZD4xOTg8L3RkPjwvdHI+PHRyPjx0aD5zZXJ2aWNlX2lkPC90aD48dGQ+MTwvdGQ+PC90cj48dHI+PHRoPnNoYXBlX2lkPC90aD48dGQ+c2hhcGVfMDI1PC90ZD48L3RyPjx0cj48dGg+dHJpcF9oZWFkc2lnbjwvdGg+PHRkPiBUeHVyZGluYWdhPC90ZD48L3RyPjx0cj48dGg+dHJpcF9pZDwvdGg+PHRkPjQwODUxMDwvdGQ+PC90cj48L3RhYmxlPjwvZGl2PmApWzBdOwogICAgICAgICAgICBwb3B1cF8zZDk0Y2JiMWRiZGY0NmY3OGZlNDEyNDU4YTMxMDZmNi5zZXRDb250ZW50KGh0bWxfOWQ0NzE2ZjI4NzNlNDJlY2JkOTBiMjEzOGViOTUxOTYpOwogICAgICAgIAoKICAgICAgICBwb2x5X2xpbmVfOTI5YjJhOGRlYjIyNDYwYzhlNzUxOGEzNGE1ODExODMuYmluZFBvcHVwKHBvcHVwXzNkOTRjYmIxZGJkZjQ2Zjc4ZmU0MTI0NThhMzEwNmY2KQogICAgICAgIDsKCiAgICAgICAgCiAgICAKICAgIAogICAgICAgICAgICB2YXIgZmVhdHVyZV9ncm91cF8wMDg1M2RlNjBlODI0MjNiOWJjOTYxNzgyMGNjZWRmOSA9IEwuZmVhdHVyZUdyb3VwKAogICAgICAgICAgICAgICAge30KICAgICAgICAgICAgKS5hZGRUbyhtYXBfMzY4YTg3OWQ5MzdlNDU2NmEyZTVhNjU2MTEyZjlkYjEpOwogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb2x5X2xpbmVfNjliNmU0MzVlMjFkNDFlNDgxMDgxM2QwMzc0ZDQxMzYgPSBMLnBvbHlsaW5lKAogICAgICAgICAgICAgICAgW1s0My4yODE3MzE3Mjk2MjMwNTQsIC0yLjk2MzAyNTEyNDA1MjExMDRdLCBbNDMuMjc5NDA0OTE2MjU2NDUsIC0yLjk2MTczNzkxOTg0MTYyODVdLCBbNDMuMjc3NzA5MjI2MDA4MzUsIC0yLjk2MDc5MjY0NTkwMTI1N10sIFs0My4yNzU4NzIxMjM4MzEwMiwgLTIuOTU5NzY0OTM3ODI4NjEzN10sIFs0My4yNzM3NjkyMjM3MjM0MzQsIC0yLjk1NzU0ODE4OTAzMzQ1NzRdLCBbNDMuMjcyNzEwNDIyMzU5NjUsIC0yLjk1NTQzNTEyMjQzMjUzM10sIFs0My4yNzE5MjU0OTgwMDkwMjYsIC0yLjk1MDA5NjM0NjEwMDM5OTddLCBbNDMuMjcxNzE2NTQ3MDg3NzA2LCAtMi45NDQ5MzU5MjQ2NzYzMzZdLCBbNDMuMjcwOTQ2Njg1Njk1OTc1LCAtMi45NDE1NDI4OTg4NDY2NTNdLCBbNDMuMjY3ODExOTU3ODQ2NzIsIC0yLjkzOTcyOTQ5OTI4OTcwM10sIFs0My4yNjU0Nzc0Njg1MDE4NjQsIC0yLjkzNjgwMDAwOTk1NTQ4NDNdLCBbNDMuMjYyODgzMjk0MTk3OTcsIC0yLjkzNTYzNzUxNzMwMDk2OV0sIFs0My4yNjEyMTk2NTg3NSwgLTIuOTM0MTAxMjg1OTQwNTZdLCBbNDMuMjU4MTgyOTYwNTUwMzY0LCAtMi45MzUzNDc3NDg2NDMyOTk1XSwgWzQzLjI1NzQ4MjEyNDEzMTIsIC0yLjkzNzg1OTExMzA3OTIyNV0sIFs0My4yNTc3MTg2NDA0NDI0LCAtMi45NDI3MzgwMDIzMjY5OTQ1XSwgWzQzLjI1ODAwMDE5Mjc4OTYsIC0yLjk0OTA1MjUyOTEyOTYyMTVdLCBbNDMuMjYwMTAxMTU2ODc4MTgsIC0yLjk1Mjk3MTQ5Mzc1NTIwOTRdLCBbNDMuMjYyODE2NTYwMzAzMjgsIC0yLjk1NjM5OTc1NzUzMTYwNTddLCBbNDMuMjY0OTcyMTE1MzUxNjksIC0yLjk2MTIyMTA3NDYxMzAyNDNdLCBbNDMuMjc1Njg3MTg2OTA4NiwgLTIuOTcxOTAwMDE3MzYyNzM3N10sIFs0My4yNzMyMDY1NTg5ODYyOCwgLTIuOTcxNTc2MTQ5MzQ4MjI0XSwgWzQzLjI3MTk2NDk5NzA2NDkzNCwgLTIuOTY5NDM2NDA2NDgwNzg2M10sIFs0My4yNzExMjM4ODUzMzAxMzQsIC0yLjk3MDk5NjI4MDY5NTAxNDhdXSwKICAgICAgICAgICAgICAgIHsiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsICJjb2xvciI6ICIjOGRhMGNiIiwgImRhc2hBcnJheSI6IG51bGwsICJkYXNoT2Zmc2V0IjogbnVsbCwgImZpbGwiOiBmYWxzZSwgImZpbGxDb2xvciI6ICIjOGRhMGNiIiwgImZpbGxPcGFjaXR5IjogMC4yLCAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsICJsaW5lQ2FwIjogInJvdW5kIiwgImxpbmVKb2luIjogInJvdW5kIiwgIm5vQ2xpcCI6IGZhbHNlLCAib3BhY2l0eSI6IDEuMCwgInNtb290aEZhY3RvciI6IDEuMCwgInN0cm9rZSI6IHRydWUsICJ3ZWlnaHQiOiAzfQogICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMDA4NTNkZTYwZTgyNDIzYjliYzk2MTc4MjBjY2VkZjkpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIHBvcHVwXzg4NDgwM2IxMGNjNjQ0OGNhZWZhNTQ5ZmM2YTVmYWY4ID0gTC5wb3B1cCh7Im1heFdpZHRoIjogIjEwMCUifSk7CgogICAgICAgIAogICAgICAgICAgICB2YXIgaHRtbF84Y2JmMjBkMDAyOTY0Mjc1OThmY2M3NjhhN2RiMmQ5NCA9ICQoYDxkaXYgaWQ9Imh0bWxfOGNiZjIwZDAwMjk2NDI3NTk4ZmNjNzY4YTdkYjJkOTQiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPjx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIHRhYmxlLWhvdmVyIj48dHI+PHRoPmRpcmVjdGlvbl9pZDwvdGg+PHRkPjwvdGQ+PC90cj48dHI+PHRoPnJvdXRlX2lkPC90aD48dGQ+MTk5PC90ZD48L3RyPjx0cj48dGg+c2VydmljZV9pZDwvdGg+PHRkPjE8L3RkPjwvdHI+PHRyPjx0aD5zaGFwZV9pZDwvdGg+PHRkPnNoYXBlXzAwMjwvdGQ+PC90cj48dHI+PHRoPnRyaXBfaGVhZHNpZ248L3RoPjx0ZD4gWm9ycm90emE8L3RkPjwvdHI+PHRyPjx0aD50cmlwX2lkPC90aD48dGQ+NDE0MzM0PC90ZD48L3RyPjwvdGFibGU+PC9kaXY+YClbMF07CiAgICAgICAgICAgIHBvcHVwXzg4NDgwM2IxMGNjNjQ0OGNhZWZhNTQ5ZmM2YTVmYWY4LnNldENvbnRlbnQoaHRtbF84Y2JmMjBkMDAyOTY0Mjc1OThmY2M3NjhhN2RiMmQ5NCk7CiAgICAgICAgCgogICAgICAgIHBvbHlfbGluZV82OWI2ZTQzNWUyMWQ0MWU0ODEwODEzZDAzNzRkNDEzNi5iaW5kUG9wdXAocG9wdXBfODg0ODAzYjEwY2M2NDQ4Y2FlZmE1NDlmYzZhNWZhZjgpCiAgICAgICAgOwoKICAgICAgICAKICAgIAogICAgCiAgICAgICAgICAgIHZhciBmZWF0dXJlX2dyb3VwXzhiZWM1YmRkNDdiODQyOGY5NDRjMDA0OGZjNDZmNDhkID0gTC5mZWF0dXJlR3JvdXAoCiAgICAgICAgICAgICAgICB7fQogICAgICAgICAgICApLmFkZFRvKG1hcF8zNjhhODc5ZDkzN2U0NTY2YTJlNWE2NTYxMTJmOWRiMSk7CiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvbHlfbGluZV80MWM0YmE0ZWUxNTg0NjA2YTIzZTUxN2RlM2Y5M2UyNCA9IEwucG9seWxpbmUoCiAgICAgICAgICAgICAgICBbWzQzLjI3MTEyMzg4NTMzMDEzNCwgLTIuOTcwOTk2MjgwNjk1MDE0OF0sIFs0My4yNzIxODc0MDEwNDIyNSwgLTIuOTY5MjQxODg2NjQ5NTcyN10sIFs0My4yNzMzOTkzNDY5NDgzOTUsIC0yLjk3MDYyODY5MzE4MTIwMzZdLCBbNDMuMjc1MDE3ODcxMzM1NDQsIC0yLjk3MjcxNjk5OTgwODgzMjddLCBbNDMuMjc3NDcwNDEyNzcyMzUsIC0yLjk3NDk0OTY5NDI1NDcyNTNdLCBbNDMuMjc2NjQ4MzIzMjk0OTM1LCAtMi45NzIxNjA1ODE1MDY5ODg1XSwgWzQzLjI2NDcyNDY4MDc1OTA4LCAtMi45NjExNDk5MDE0NjYwMjE2XSwgWzQzLjI2MjU0NzA5MTA5MzAwNSwgLTIuOTU2MzI4OTUzNDE4MjUzM10sIFs0My4yNTk0NjAwNDMzMDAxNSwgLTIuOTUyMjY5MTkzMzg1ODUzNF0sIFs0My4yNTc5NDQ4NTg2MzgwNywgLTIuOTQ5MDU1NDY4Njc2Mjg5M10sIFs0My4yNTc1ODc1Mzc3MDQxMDQsIC0yLjk0MjUyMzg1ODY3ODQzNV0sIFs0My4yNTgwNjQ0NTA0MzA1MjQsIC0yLjkzODUyNzI2Njk5MzAwMDddLCBbNDMuMjYwNjQwOTAyNzk5NTUsIC0yLjkzNzM5NDY3NDYzNzU1NjhdLCBbNDMuMjYyODA0NTE1NzY3ODEsIC0yLjkzNjQ5MTk1NjUwOTc0MjNdLCBbNDMuMjY1ODY0NzM2MTczODMsIC0yLjkzNjk4MjIwODQ2ODMyMTddLCBbNDMuMjY3NTc2MzIxNTY4MTg1LCAtMi45MzkzNzAwNTY2MjA0NTZdLCBbNDMuMjcxMDI2MDI0MjE1MDA0LCAtMi45NDEyMzk4Nzg2NjY0NDVdLCBbNDMuMjcxOTQ3ODA2MDc1NDcsIC0yLjk0NTA4NTM5NTc3MjI1NDddLCBbNDMuMjcyMTIxNTc1NDc5NDksIC0yLjk1MDU5NDIwODczNjI5MTVdLCBbNDMuMjczMzA0OTI4MDIyNiwgLTIuOTU1MzM0ODMxNTEzMTkxM10sIFs0My4yNzQ3MTk2MTQwMzY1NiwgLTIuOTU4NTg5NTcxNDUyMjExMl0sIFs0My4yNzY3NzYwMTUzNTIwNTYsIC0yLjk2MDA1NjEwNTEwMjM1MzddLCBbNDMuMjc4ODMzMzUyMDk0ODQsIC0yLjk2MTE5NDQwODAzOTg0MzZdLCBbNDMuMjgxNzA1MzAyOTQwNzE1LCAtMi45NjI4MTI4NTM1NDc4OTddLCBbNDMuMjgxNzMxNzI5NjIzMDU0LCAtMi45NjMwMjUxMjQwNTIxMTA0XV0sCiAgICAgICAgICAgICAgICB7ImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLCAiY29sb3IiOiAiI2U3OGFjMyIsICJkYXNoQXJyYXkiOiBudWxsLCAiZGFzaE9mZnNldCI6IG51bGwsICJmaWxsIjogZmFsc2UsICJmaWxsQ29sb3IiOiAiI2U3OGFjMyIsICJmaWxsT3BhY2l0eSI6IDAuMiwgImZpbGxSdWxlIjogImV2ZW5vZGQiLCAibGluZUNhcCI6ICJyb3VuZCIsICJsaW5lSm9pbiI6ICJyb3VuZCIsICJub0NsaXAiOiBmYWxzZSwgIm9wYWNpdHkiOiAxLjAsICJzbW9vdGhGYWN0b3IiOiAxLjAsICJzdHJva2UiOiB0cnVlLCAid2VpZ2h0IjogM30KICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzhiZWM1YmRkNDdiODQyOGY5NDRjMDA0OGZjNDZmNDhkKTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBwb3B1cF9lMGFhYTg3ZjU2YjY0NGIyYTk1MDQxM2NmZGE4MzAwMyA9IEwucG9wdXAoeyJtYXhXaWR0aCI6ICIxMDAlIn0pOwoKICAgICAgICAKICAgICAgICAgICAgdmFyIGh0bWxfMTZmM2UwYWFkZWFjNDc4N2JhMmJhODBmYmQ3NDU5YTIgPSAkKGA8ZGl2IGlkPSJodG1sXzE2ZjNlMGFhZGVhYzQ3ODdiYTJiYTgwZmJkNzQ1OWEyIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij48dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCB0YWJsZS1ob3ZlciI+PHRyPjx0aD5kaXJlY3Rpb25faWQ8L3RoPjx0ZD48L3RkPjwvdHI+PHRyPjx0aD5yb3V0ZV9pZDwvdGg+PHRkPjIwMDwvdGQ+PC90cj48dHI+PHRoPnNlcnZpY2VfaWQ8L3RoPjx0ZD4xPC90ZD48L3RyPjx0cj48dGg+c2hhcGVfaWQ8L3RoPjx0ZD5zaGFwZV8xMTk8L3RkPjwvdHI+PHRyPjx0aD50cmlwX2hlYWRzaWduPC90aD48dGQ+IFpvcnJvdHphPC90ZD48L3RyPjx0cj48dGg+dHJpcF9pZDwvdGg+PHRkPjQxNDQ3ODwvdGQ+PC90cj48L3RhYmxlPjwvZGl2PmApWzBdOwogICAgICAgICAgICBwb3B1cF9lMGFhYTg3ZjU2YjY0NGIyYTk1MDQxM2NmZGE4MzAwMy5zZXRDb250ZW50KGh0bWxfMTZmM2UwYWFkZWFjNDc4N2JhMmJhODBmYmQ3NDU5YTIpOwogICAgICAgIAoKICAgICAgICBwb2x5X2xpbmVfNDFjNGJhNGVlMTU4NDYwNmEyM2U1MTdkZTNmOTNlMjQuYmluZFBvcHVwKHBvcHVwX2UwYWFhODdmNTZiNjQ0YjJhOTUwNDEzY2ZkYTgzMDAzKQogICAgICAgIDsKCiAgICAgICAgCiAgICAKICAgIAogICAgICAgICAgICB2YXIgZmVhdHVyZV9ncm91cF9kZjc5NDYyYjRkMDU0ZjQ5YTExYWY0YTBjOWJlNzAyOSA9IEwuZmVhdHVyZUdyb3VwKAogICAgICAgICAgICAgICAge30KICAgICAgICAgICAgKS5hZGRUbyhtYXBfMzY4YTg3OWQ5MzdlNDU2NmEyZTVhNjU2MTEyZjlkYjEpOwogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb2x5X2xpbmVfMWY4OTczNjc3MDRhNGE0OGJkN2RkNTRjZGY4MWI0YTQgPSBMLnBvbHlsaW5lKAogICAgICAgICAgICAgICAgW1s0My4yNTUwMjkyNjI4MjU3NDQsIC0yLjkyMjU1NzcyNDYxNzcyNl0sIFs0My4yNTY1OTYzMTQ4MTMzODYsIC0yLjkyNTcwNzkwNDcwOTQ1NDVdLCBbNDMuMjYwNDIwNjk3NjQ2MTU0LCAtMi45MjI3NTUzODI5MDc4NDU0XSwgWzQzLjI2MzkzODc1OTE4MDg4LCAtMi45MjM1NzkwODA0ODA3MjI3XSwgWzQzLjI2NTIzMDg2NTMzMDkwNiwgLTIuOTI1MjIzOTc3ODMzMjQzNl0sIFs0My4yNjcxODQ2MDMzNzkwMTUsIC0yLjkyNTE4NDM2NjI3MTQ3ODddLCBbNDMuMjY5MzA3MTU0MzU4MywgLTIuOTI0NjExNTY4ODcyMTQ1XSwgWzQzLjI2NzE3NTU3MjQzNDQ2LCAtMi45MjEzMzQ1NDM1NDM1MjM0XSwgWzQzLjI2NzQzODAwNzgxMjE2LCAtMi45MTk4NzAwNDM3NTMyNzddLCBbNDMuMjY4MzE5OTIwNzcyODksIC0yLjkxODYxNDM1MDc4ODQwMl0sIFs0My4yNjkzMjExMjA3MDQ1LCAtMi45MTg2Mjk3MzY1MDA3ODk0XSwgWzQzLjI2Nzk5NDUzNzM0NzM2LCAtMi45MTU2ODQ3NzA5OTA0NTJdLCBbNDMuMjY1MzQ1NDk3OTc0ODEsIC0yLjkxMzMwNTM0NTkzNjQyNV0sIFs0My4yNjQ3NzI3MzM0NDM3MzUsIC0yLjkxMTc5NzgxNjY5NTgzNV0sIFs0My4yNjIyNTMwMzcyMjc3OSwgLTIuOTEzMDczMDM3ODA1MjY1NF0sIFs0My4yNjEyODk5NzA3ODUzMzQsIC0yLjkxMTQ0ODk5MDc2Mjc5MDVdLCBbNDMuMjYzMDMwMTUwNDEyMSwgLTIuOTEwOTE1NjY5MTYzNTM0NV1dLAogICAgICAgICAgICAgICAgeyJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwgImNvbG9yIjogIiNhNmQ4NTQiLCAiZGFzaEFycmF5IjogbnVsbCwgImRhc2hPZmZzZXQiOiBudWxsLCAiZmlsbCI6IGZhbHNlLCAiZmlsbENvbG9yIjogIiNhNmQ4NTQiLCAiZmlsbE9wYWNpdHkiOiAwLjIsICJmaWxsUnVsZSI6ICJldmVub2RkIiwgImxpbmVDYXAiOiAicm91bmQiLCAibGluZUpvaW4iOiAicm91bmQiLCAibm9DbGlwIjogZmFsc2UsICJvcGFjaXR5IjogMS4wLCAic21vb3RoRmFjdG9yIjogMS4wLCAic3Ryb2tlIjogdHJ1ZSwgIndlaWdodCI6IDN9CiAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9kZjc5NDYyYjRkMDU0ZjQ5YTExYWY0YTBjOWJlNzAyOSk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgcG9wdXBfOGVkMmM0MmVjNWNlNGFjZjlmOTI2MjI4YzJmMDY5NmEgPSBMLnBvcHVwKHsibWF4V2lkdGgiOiAiMTAwJSJ9KTsKCiAgICAgICAgCiAgICAgICAgICAgIHZhciBodG1sXzZjYThmZDBiMTEzZjQ3OTdiMTI5YTFmNTA3ZTNlNzhlID0gJChgPGRpdiBpZD0iaHRtbF82Y2E4ZmQwYjExM2Y0Nzk3YjEyOWExZjUwN2UzZTc4ZSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+PHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQgdGFibGUtaG92ZXIiPjx0cj48dGg+ZGlyZWN0aW9uX2lkPC90aD48dGQ+PC90ZD48L3RyPjx0cj48dGg+cm91dGVfaWQ8L3RoPjx0ZD4yMDE8L3RkPjwvdHI+PHRyPjx0aD5zZXJ2aWNlX2lkPC90aD48dGQ+MTwvdGQ+PC90cj48dHI+PHRoPnNoYXBlX2lkPC90aD48dGQ+c2hhcGVfMDM2PC90ZD48L3RyPjx0cj48dGg+dHJpcF9oZWFkc2lnbjwvdGg+PHRkPiBBdHh1cmk8L3RkPjwvdHI+PHRyPjx0aD50cmlwX2lkPC90aD48dGQ+NDA2MzA1PC90ZD48L3RyPjwvdGFibGU+PC9kaXY+YClbMF07CiAgICAgICAgICAgIHBvcHVwXzhlZDJjNDJlYzVjZTRhY2Y5ZjkyNjIyOGMyZjA2OTZhLnNldENvbnRlbnQoaHRtbF82Y2E4ZmQwYjExM2Y0Nzk3YjEyOWExZjUwN2UzZTc4ZSk7CiAgICAgICAgCgogICAgICAgIHBvbHlfbGluZV8xZjg5NzM2NzcwNGE0YTQ4YmQ3ZGQ1NGNkZjgxYjRhNC5iaW5kUG9wdXAocG9wdXBfOGVkMmM0MmVjNWNlNGFjZjlmOTI2MjI4YzJmMDY5NmEpCiAgICAgICAgOwoKICAgICAgICAKICAgIAogICAgCiAgICAgICAgICAgIHZhciBmZWF0dXJlX2dyb3VwXzNlMDE3MDcyZjY5OTQ3ZjBiZGE1NzFlOTRkNWE3Yzk0ID0gTC5mZWF0dXJlR3JvdXAoCiAgICAgICAgICAgICAgICB7fQogICAgICAgICAgICApLmFkZFRvKG1hcF8zNjhhODc5ZDkzN2U0NTY2YTJlNWE2NTYxMTJmOWRiMSk7CiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvbHlfbGluZV8xNDY2ZTU3NDJkZmI0ZDhhOWEyNDBlNmZiNjkxMzk0ZiA9IEwucG9seWxpbmUoCiAgICAgICAgICAgICAgICBbWzQzLjI2MzAzMDE1MDQxMjEsIC0yLjkxMDkxNTY2OTE2MzUzNDVdLCBbNDMuMjYxMTIxNDI3MTk4OTIsIC0yLjkxMTIwMTgwMTUzNDg5NTVdLCBbNDMuMjYwNjU4MTQyOTQ3NTksIC0yLjkxMjU5NDY0MzM4ODA4OF0sIFs0My4yNjE1MzEwMDIwNjU0MSwgLTIuOTE1Mjc0MjY3NTQ0NDQ2N10sIFs0My4yNjQ5MDAyNzM4NDU0NiwgLTIuOTE4MzM1NzMyMjAwMjYwOF0sIFs0My4yNjQ5ODIyNjEyODg3NSwgLTIuOTIyNDc2NDcwNzUwMjU5N10sIFs0My4yNjI4NDUxMjExMjIxMDUsIC0yLjkyMzA1OTE0MzM5OTg2MTZdLCBbNDMuMjYwNDExNTY5MTE0ODQ0LCAtMi45MjI5MzYxOTIyNTc1NDA1XSwgWzQzLjI1NzA5MDM0MjUzMzA3NSwgLTIuOTI3MTI5Mjk1MDc3OTIzN10sIFs0My4yNTQwODg0Nzk0MjQxMDUsIC0yLjkyNTA4MDM2ODg0MDg3MDZdLCBbNDMuMjU0NzczMDc3NzUxNTIsIC0yLjkyNjc0Mzg5NDM0MzA3NDRdLCBbNDMuMjU1MDI5MjYyODI1NzQ0LCAtMi45MjI1NTc3MjQ2MTc3MjZdXSwKICAgICAgICAgICAgICAgIHsiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsICJjb2xvciI6ICIjZmZkOTJmIiwgImRhc2hBcnJheSI6IG51bGwsICJkYXNoT2Zmc2V0IjogbnVsbCwgImZpbGwiOiBmYWxzZSwgImZpbGxDb2xvciI6ICIjZmZkOTJmIiwgImZpbGxPcGFjaXR5IjogMC4yLCAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsICJsaW5lQ2FwIjogInJvdW5kIiwgImxpbmVKb2luIjogInJvdW5kIiwgIm5vQ2xpcCI6IGZhbHNlLCAib3BhY2l0eSI6IDEuMCwgInNtb290aEZhY3RvciI6IDEuMCwgInN0cm9rZSI6IHRydWUsICJ3ZWlnaHQiOiAzfQogICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfM2UwMTcwNzJmNjk5NDdmMGJkYTU3MWU5NGQ1YTdjOTQpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIHBvcHVwX2Q3NzVkN2RmOTJkODRiMTliNzdkMGE2ZTYxNTllZGQwID0gTC5wb3B1cCh7Im1heFdpZHRoIjogIjEwMCUifSk7CgogICAgICAgIAogICAgICAgICAgICB2YXIgaHRtbF9lYzdjYjRiOWY2ZGQ0ZGUxOGU1YzgxYmVkM2M5MjMyZSA9ICQoYDxkaXYgaWQ9Imh0bWxfZWM3Y2I0YjlmNmRkNGRlMThlNWM4MWJlZDNjOTIzMmUiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPjx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIHRhYmxlLWhvdmVyIj48dHI+PHRoPmRpcmVjdGlvbl9pZDwvdGg+PHRkPjwvdGQ+PC90cj48dHI+PHRoPnJvdXRlX2lkPC90aD48dGQ+MjAyPC90ZD48L3RyPjx0cj48dGg+c2VydmljZV9pZDwvdGg+PHRkPjE8L3RkPjwvdHI+PHRyPjx0aD5zaGFwZV9pZDwvdGg+PHRkPnNoYXBlXzAxODwvdGQ+PC90cj48dHI+PHRoPnRyaXBfaGVhZHNpZ248L3RoPjx0ZD4gQXR4dXJpPC90ZD48L3RyPjx0cj48dGg+dHJpcF9pZDwvdGg+PHRkPjQwNjQ3MTwvdGQ+PC90cj48L3RhYmxlPjwvZGl2PmApWzBdOwogICAgICAgICAgICBwb3B1cF9kNzc1ZDdkZjkyZDg0YjE5Yjc3ZDBhNmU2MTU5ZWRkMC5zZXRDb250ZW50KGh0bWxfZWM3Y2I0YjlmNmRkNGRlMThlNWM4MWJlZDNjOTIzMmUpOwogICAgICAgIAoKICAgICAgICBwb2x5X2xpbmVfMTQ2NmU1NzQyZGZiNGQ4YTlhMjQwZTZmYjY5MTM5NGYuYmluZFBvcHVwKHBvcHVwX2Q3NzVkN2RmOTJkODRiMTliNzdkMGE2ZTYxNTllZGQwKQogICAgICAgIDsKCiAgICAgICAgCiAgICAKICAgIAogICAgICAgICAgICB2YXIgZmVhdHVyZV9ncm91cF9iYjliZWRmNzJhMzI0NTNiOGJmNWY2ZGNhOWQxYjU1MyA9IEwuZmVhdHVyZUdyb3VwKAogICAgICAgICAgICAgICAge30KICAgICAgICAgICAgKS5hZGRUbyhtYXBfMzY4YTg3OWQ5MzdlNDU2NmEyZTVhNjU2MTEyZjlkYjEpOwogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb2x5X2xpbmVfYWVmYWU0M2M2MDM3NGMwNDljM2Q1MzgxNGRmNzI2N2IgPSBMLnBvbHlsaW5lKAogICAgICAgICAgICAgICAgW1s0My4yNDc5NzU3NzQ1NTkzNjQsIC0yLjk1MDY0NDA5MzA3NTMyMzVdLCBbNDMuMjQ5MDc2OTE3MzcxNjc0LCAtMi45NTAyNzAyODQ0NzkzNjhdLCBbNDMuMjUxMjE5OTg0ODExNDcsIC0yLjk0ODg3NjcyMDQ3NjU3M10sIFs0My4yNDk4MTg5NDc1Mjk3NTQsIC0yLjk0OTQ5NDA1Nzk1ODg5MTVdLCBbNDMuMjQ4NjUzODQzOTA5NjQsIC0yLjk0OTMwMjMxMjI5NDk3MTVdLCBbNDMuMjQ2OTMxMjAzNjE1MTYsIC0yLjk0ODI2MzkxOTQ3NDIwNDZdLCBbNDMuMjQ5NDE2OTc4MDE4NDk1LCAtMi45NDY2MTE2NDM0MTI2OTA2XSwgWzQzLjI1MjI1NjY0MzY4Njc2LCAtMi45NDYxODMzMzE4ODU3ODldLCBbNDMuMjU0MzMwODMwMzM3NCwgLTIuOTQ0NTk0Mzk5OTQxNzU4M10sIFs0My4yNTY2NDczMTU2MDE1NSwgLTIuOTQyMjY1MTIyMzIxMjcwNF0sIFs0My4yNTg2MDM4NTgwMjkwMywgLTIuOTQxMjUyMTYyMTAzMTQ1Nl0sIFs0My4yNjE1OTE0MzkwNDA0MiwgLTIuOTQwMDMyNDUwMTkwNzU2XSwgWzQzLjI2MzYxNTE0NjM1MzI3NCwgLTIuOTM5MTg3MzcxODk2MTk5XSwgWzQzLjI2MzE2OTEyMzc4MDI4LCAtMi45MzYwNTIwMTI1MDU5Mzg2XSwgWzQzLjI2MzYyOTYzMTgzOTAzLCAtMi45MzQ1ODY4OTAxNjEyMzldLCBbNDMuMjY2NjkxMjk5MTA1NjIsIC0yLjkzMzMzOTk3MzkzMDE2ODddLCBbNDMuMjY5NjY4NjEzMzgzNzMsIC0yLjkyMjQ3OTIxNDQ3ODM3NjRdLCBbNDMuMjY3NjQxNDEwMjQ3MDYsIC0yLjkxODQyNjYyNDc1MTk5Ml0sIFs0My4yNjU1MzA4MjE4MTc2NTYsIC0yLjkxNjg3ODA2NzMyMDYyOF0sIFs0My4yNjE0MTgyNjg1MTc4MTUsIC0yLjkxNTg3MDE2Nzk2NDgyXSwgWzQzLjI2MjM5MTQwMDA3MTE0NSwgLTIuOTE1MzA3MzU0MzgyOTQ5XSwgWzQzLjI2NDY2NjYxMjM3MDc5LCAtMi45MTM2MTQ4MjQyODU5Nzc2XSwgWzQzLjI2NDc3MjczMzQ0MzczNSwgLTIuOTExNzk3ODE2Njk1ODM1XSwgWzQzLjI2MjI1MzAzNzIyNzc5LCAtMi45MTMwNzMwMzc4MDUyNjU0XSwgWzQzLjI2MTI4OTk3MDc4NTMzNCwgLTIuOTExNDQ4OTkwNzYyNzkwNV1dLAogICAgICAgICAgICAgICAgeyJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwgImNvbG9yIjogIiNlNWM0OTQiLCAiZGFzaEFycmF5IjogbnVsbCwgImRhc2hPZmZzZXQiOiBudWxsLCAiZmlsbCI6IGZhbHNlLCAiZmlsbENvbG9yIjogIiNlNWM0OTQiLCAiZmlsbE9wYWNpdHkiOiAwLjIsICJmaWxsUnVsZSI6ICJldmVub2RkIiwgImxpbmVDYXAiOiAicm91bmQiLCAibGluZUpvaW4iOiAicm91bmQiLCAibm9DbGlwIjogZmFsc2UsICJvcGFjaXR5IjogMS4wLCAic21vb3RoRmFjdG9yIjogMS4wLCAic3Ryb2tlIjogdHJ1ZSwgIndlaWdodCI6IDN9CiAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9iYjliZWRmNzJhMzI0NTNiOGJmNWY2ZGNhOWQxYjU1Myk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgcG9wdXBfMDA5ZjE0MWNlYzI0NDAxMjlmNDMyZTgzZTRmMTE2M2IgPSBMLnBvcHVwKHsibWF4V2lkdGgiOiAiMTAwJSJ9KTsKCiAgICAgICAgCiAgICAgICAgICAgIHZhciBodG1sX2RmODQwNzRlMzczYjQ2ZWI5OTkzYmM5OTcwNjNlMmRjID0gJChgPGRpdiBpZD0iaHRtbF9kZjg0MDc0ZTM3M2I0NmViOTk5M2JjOTk3MDYzZTJkYyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+PHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQgdGFibGUtaG92ZXIiPjx0cj48dGg+ZGlyZWN0aW9uX2lkPC90aD48dGQ+PC90ZD48L3RyPjx0cj48dGg+cm91dGVfaWQ8L3RoPjx0ZD4yMDM8L3RkPjwvdHI+PHRyPjx0aD5zZXJ2aWNlX2lkPC90aD48dGQ+MTwvdGQ+PC90cj48dHI+PHRoPnNoYXBlX2lkPC90aD48dGQ+c2hhcGVfMTExPC90ZD48L3RyPjx0cj48dGg+dHJpcF9oZWFkc2lnbjwvdGg+PHRkPiBCZXRvbGF0emE8L3RkPjwvdHI+PHRyPjx0aD50cmlwX2lkPC90aD48dGQ+NDE1Mjk5PC90ZD48L3RyPjwvdGFibGU+PC9kaXY+YClbMF07CiAgICAgICAgICAgIHBvcHVwXzAwOWYxNDFjZWMyNDQwMTI5ZjQzMmU4M2U0ZjExNjNiLnNldENvbnRlbnQoaHRtbF9kZjg0MDc0ZTM3M2I0NmViOTk5M2JjOTk3MDYzZTJkYyk7CiAgICAgICAgCgogICAgICAgIHBvbHlfbGluZV9hZWZhZTQzYzYwMzc0YzA0OWMzZDUzODE0ZGY3MjY3Yi5iaW5kUG9wdXAocG9wdXBfMDA5ZjE0MWNlYzI0NDAxMjlmNDMyZTgzZTRmMTE2M2IpCiAgICAgICAgOwoKICAgICAgICAKICAgIAogICAgCiAgICAgICAgICAgIHZhciBmZWF0dXJlX2dyb3VwXzRlMWUxOGFmNjZjZTRhNTk5YzA3MWEyZWFmMDVjYWQ2ID0gTC5mZWF0dXJlR3JvdXAoCiAgICAgICAgICAgICAgICB7fQogICAgICAgICAgICApLmFkZFRvKG1hcF8zNjhhODc5ZDkzN2U0NTY2YTJlNWE2NTYxMTJmOWRiMSk7CiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvbHlfbGluZV84MmFiNTM1MDE3NWU0MWY1YWNhMGIxNjI0NjU2YWVkMSA9IEwucG9seWxpbmUoCiAgICAgICAgICAgICAgICBbWzQzLjI2MTI4OTk3MDc4NTMzNCwgLTIuOTExNDQ4OTkwNzYyNzkwNV0sIFs0My4yNjA2NTgxNDI5NDc1OSwgLTIuOTEyNTk0NjQzMzg4MDg4XSwgWzQzLjI2MTUzMTAwMjA2NTQxLCAtMi45MTUyNzQyNjc1NDQ0NDY3XSwgWzQzLjI2NTUxMzY0MzEwODQ2LCAtMi45MTY2ODMxMDkwNzgxNjhdLCBbNDMuMjY3ODMwMzcwMzg5NTc1LCAtMi45MTg0MzQ4NTAxODE5OTE0XSwgWzQzLjI2OTgzMTM3MTQ4NDkyNiwgLTIuOTIyNTcyODQ1NTE3NTA3N10sIFs0My4yNzAwODM4OTQ3OTAyMDQsIC0yLjkyNjAwMzU2MjEyMjg3MzNdLCBbNDMuMjY2MDg0OTA3NjE1OTIsIC0yLjkzMzcwNTgzNDYwNzY2NjNdLCBbNDMuMjYzMjg5NzI1MzM5NTUsIC0yLjkzNTk4NzI3NDM0NzM4MzRdLCBbNDMuMjYzNjQ0NjIyMzk5NTQ2LCAtMi45MzkyODYyNDU4MTI0MTA1XSwgWzQzLjI2MTE3MTIxMjU0MzEzLCAtMi45NDAyNzE5NzM5ODg0ODY0XSwgWzQzLjI1ODM1ODk1MTY3NjA0NCwgLTIuOTQxNDExMzc4Nzc1NjMxN10sIFs0My4yNTcyNzU0MTUxMjQ2OCwgLTIuOTQxNzI4OTUzNjU4ODg1XSwgWzQzLjI1NDM2NDAxMjk1OTA1LCAtMi45NDQ3MTg1MDE1ODgxMTE0XSwgWzQzLjI1Mjg4OTUzNTc0Mzk1NCwgLTIuOTQ2NDc5ODA0MjAzNTQ2NV0sIFs0My4yNTE2MDg4MjEyODg1MiwgLTIuOTQ3NTg4NDMzMzc1NTAwNV0sIFs0My4yNTE4ODg5NjY3NDI5NzUsIC0yLjk0ODkxMTU0NjM3MzkxNTddLCBbNDMuMjUxMjE5OTg0ODExNDcsIC0yLjk0ODg3NjcyMDQ3NjU3M10sIFs0My4yNDk4MTg5NDc1Mjk3NTQsIC0yLjk0OTQ5NDA1Nzk1ODg5MTVdLCBbNDMuMjQ4NjUzODQzOTA5NjQsIC0yLjk0OTMwMjMxMjI5NDk3MTVdLCBbNDMuMjQ2OTg4MzgzMTI1ODk1LCAtMi45NTA2MDIzMjQyOTE4NTk1XSwgWzQzLjI0Nzk3NTc3NDU1OTM2NCwgLTIuOTUwNjQ0MDkzMDc1MzIzNV1dLAogICAgICAgICAgICAgICAgeyJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwgImNvbG9yIjogIiNiM2IzYjMiLCAiZGFzaEFycmF5IjogbnVsbCwgImRhc2hPZmZzZXQiOiBudWxsLCAiZmlsbCI6IGZhbHNlLCAiZmlsbENvbG9yIjogIiNiM2IzYjMiLCAiZmlsbE9wYWNpdHkiOiAwLjIsICJmaWxsUnVsZSI6ICJldmVub2RkIiwgImxpbmVDYXAiOiAicm91bmQiLCAibGluZUpvaW4iOiAicm91bmQiLCAibm9DbGlwIjogZmFsc2UsICJvcGFjaXR5IjogMS4wLCAic21vb3RoRmFjdG9yIjogMS4wLCAic3Ryb2tlIjogdHJ1ZSwgIndlaWdodCI6IDN9CiAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF80ZTFlMThhZjY2Y2U0YTU5OWMwNzFhMmVhZjA1Y2FkNik7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgcG9wdXBfZTg3MjUyNzUxMDIxNDEyMzlhZTY4YTg4YzRlY2M4ZDEgPSBMLnBvcHVwKHsibWF4V2lkdGgiOiAiMTAwJSJ9KTsKCiAgICAgICAgCiAgICAgICAgICAgIHZhciBodG1sXzQ4YTIyMmIwMTNlODQxYTViYzBhNTNhN2MwZTYwOGFiID0gJChgPGRpdiBpZD0iaHRtbF80OGEyMjJiMDEzZTg0MWE1YmMwYTUzYTdjMGU2MDhhYiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+PHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQgdGFibGUtaG92ZXIiPjx0cj48dGg+ZGlyZWN0aW9uX2lkPC90aD48dGQ+PC90ZD48L3RyPjx0cj48dGg+cm91dGVfaWQ8L3RoPjx0ZD4yMDQ8L3RkPjwvdHI+PHRyPjx0aD5zZXJ2aWNlX2lkPC90aD48dGQ+MTwvdGQ+PC90cj48dHI+PHRoPnNoYXBlX2lkPC90aD48dGQ+c2hhcGVfMDE2PC90ZD48L3RyPjx0cj48dGg+dHJpcF9oZWFkc2lnbjwvdGg+PHRkPiBCZXRvbGF0emE8L3RkPjwvdHI+PHRyPjx0aD50cmlwX2lkPC90aD48dGQ+NDE1NDYxPC90ZD48L3RyPjwvdGFibGU+PC9kaXY+YClbMF07CiAgICAgICAgICAgIHBvcHVwX2U4NzI1Mjc1MTAyMTQxMjM5YWU2OGE4OGM0ZWNjOGQxLnNldENvbnRlbnQoaHRtbF80OGEyMjJiMDEzZTg0MWE1YmMwYTUzYTdjMGU2MDhhYik7CiAgICAgICAgCgogICAgICAgIHBvbHlfbGluZV84MmFiNTM1MDE3NWU0MWY1YWNhMGIxNjI0NjU2YWVkMS5iaW5kUG9wdXAocG9wdXBfZTg3MjUyNzUxMDIxNDEyMzlhZTY4YTg4YzRlY2M4ZDEpCiAgICAgICAgOwoKICAgICAgICAKICAgIAogICAgCiAgICAgICAgICAgIHZhciBmZWF0dXJlX2dyb3VwX2Q0ZjY3OGQ2ZjgwMzRjOWNiN2E4NGE5ZWQxZjhiZjg0ID0gTC5mZWF0dXJlR3JvdXAoCiAgICAgICAgICAgICAgICB7fQogICAgICAgICAgICApLmFkZFRvKG1hcF8zNjhhODc5ZDkzN2U0NTY2YTJlNWE2NTYxMTJmOWRiMSk7CiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvbHlfbGluZV83M2QxOTk2ZGMwMWY0Y2UxOTk0NTc1ZTRhZWVlYzFiMyA9IEwucG9seWxpbmUoCiAgICAgICAgICAgICAgICBbWzQzLjI2NTk2NDUxMjk5Nzk5NiwgLTIuOTE4MDg1NzMzMTAzNjc4Ml0sIFs0My4yNjQ5MDAyNzM4NDU0NiwgLTIuOTE4MzM1NzMyMjAwMjYwOF0sIFs0My4yNjY2OTg1ODIzOTgzNywgLTIuOTE5NTYwODIwMjg2NTMxM10sIFs0My4yNjcyNjE2NjA2Njg4ODYsIC0yLjkyMTUwNTA4NzA3NzIxN10sIFs0My4yNjY5MTQ2NTQzNzU2NiwgLTIuOTIyNzM0ODUyNzQ5MzE2XSwgWzQzLjI2ODA1MjU2OTI1NTkzNiwgLTIuOTI0NDQzNjg4MDc2MzMyXSwgWzQzLjI2NjIwODg5NDUyMjgyLCAtMi45MjU0OTA5Nzc4OTg2MDA3XSwgWzQzLjI2NDQ5MjEzMTYwMDYxLCAtMi45MjQ1MDYwNzU4MzQzMDMzXSwgWzQzLjI2Mjg0NTEyMTEyMjEwNSwgLTIuOTIzMDU5MTQzMzk5ODYxNl0sIFs0My4yNTk3OTU4MzMxMjMyOSwgLTIuOTI0MDg3Mjc5MzEzOTQ5XSwgWzQzLjI2MTczMjU4ODI2MTI4LCAtMi45Mjg5NjcwNDEzODU2NDgzXSwgWzQzLjI2MjcwOTg2NzM5MDk3LCAtMi45MzM0NTcyMzg3MDIxNTc0XSwgWzQzLjI2MzI4OTcyNTMzOTU1LCAtMi45MzU5ODcyNzQzNDczODM0XSwgWzQzLjI2MzY0NDYyMjM5OTU0NiwgLTIuOTM5Mjg2MjQ1ODEyNDEwNV0sIFs0My4yNjExNzEyMTI1NDMxMywgLTIuOTQwMjcxOTczOTg4NDg2NF0sIFs0My4yNjEzNTMxODczNDUxMTUsIC0yLjk0MTk5OTg1OTg1Mjc4NV0sIFs0My4yNjIxNTMxMDM5MjUwOTQsIC0yLjk0NTY0OTAzNzQ2MjQ5MTddLCBbNDMuMjYwNDQ1ODI2NjkwOTc2LCAtMi45NDcxNzI2MDI3Nzc4ODQ2XSwgWzQzLjI1ODAwMDE5Mjc4OTYsIC0yLjk0OTA1MjUyOTEyOTYyMTVdLCBbNDMuMjYwMTAxMTU2ODc4MTgsIC0yLjk1Mjk3MTQ5Mzc1NTIwOTRdLCBbNDMuMjYxMDA0NTk5OTg5MTg1LCAtMi45NTY1NzkwODc3NjI1MjQ0XSwgWzQzLjI2MTgxNjc0NjY2OTA4LCAtMi45NTk5NDk2NDU1MzE0OTFdLCBbNDMuMjYzNjk5MDMwNzMwMzIsIC0yLjk2MjYwNDcwNDEzODA5MV0sIFs0My4yNjMzNDk0ODU3Mzg0MiwgLTIuOTYzNDM3OTUzMTA3NzU3XV0sCiAgICAgICAgICAgICAgICB7ImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLCAiY29sb3IiOiAiIzY2YzJhNSIsICJkYXNoQXJyYXkiOiBudWxsLCAiZGFzaE9mZnNldCI6IG51bGwsICJmaWxsIjogZmFsc2UsICJmaWxsQ29sb3IiOiAiIzY2YzJhNSIsICJmaWxsT3BhY2l0eSI6IDAuMiwgImZpbGxSdWxlIjogImV2ZW5vZGQiLCAibGluZUNhcCI6ICJyb3VuZCIsICJsaW5lSm9pbiI6ICJyb3VuZCIsICJub0NsaXAiOiBmYWxzZSwgIm9wYWNpdHkiOiAxLjAsICJzbW9vdGhGYWN0b3IiOiAxLjAsICJzdHJva2UiOiB0cnVlLCAid2VpZ2h0IjogM30KICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2Q0ZjY3OGQ2ZjgwMzRjOWNiN2E4NGE5ZWQxZjhiZjg0KTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBwb3B1cF9lMTYzMGI0MWY5Yzc0MjEyOWMzZTk5Y2YxZGZhYzhmMyA9IEwucG9wdXAoeyJtYXhXaWR0aCI6ICIxMDAlIn0pOwoKICAgICAgICAKICAgICAgICAgICAgdmFyIGh0bWxfNjFmMGZiYTc3M2JmNDI5MzgyYjNiYWI2NGZhMmM0ODggPSAkKGA8ZGl2IGlkPSJodG1sXzYxZjBmYmE3NzNiZjQyOTM4MmIzYmFiNjRmYTJjNDg4IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij48dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCB0YWJsZS1ob3ZlciI+PHRyPjx0aD5kaXJlY3Rpb25faWQ8L3RoPjx0ZD48L3RkPjwvdHI+PHRyPjx0aD5yb3V0ZV9pZDwvdGg+PHRkPjIwNTwvdGQ+PC90cj48dHI+PHRoPnNlcnZpY2VfaWQ8L3RoPjx0ZD4xPC90ZD48L3RyPjx0cj48dGg+c2hhcGVfaWQ8L3RoPjx0ZD5zaGFwZV8wMTQ8L3RkPjwvdHI+PHRyPjx0aD50cmlwX2hlYWRzaWduPC90aD48dGQ+IEFsdGFtaXJhPC90ZD48L3RyPjx0cj48dGg+dHJpcF9pZDwvdGg+PHRkPjQxNjU0MzwvdGQ+PC90cj48L3RhYmxlPjwvZGl2PmApWzBdOwogICAgICAgICAgICBwb3B1cF9lMTYzMGI0MWY5Yzc0MjEyOWMzZTk5Y2YxZGZhYzhmMy5zZXRDb250ZW50KGh0bWxfNjFmMGZiYTc3M2JmNDI5MzgyYjNiYWI2NGZhMmM0ODgpOwogICAgICAgIAoKICAgICAgICBwb2x5X2xpbmVfNzNkMTk5NmRjMDFmNGNlMTk5NDU3NWU0YWVlZWMxYjMuYmluZFBvcHVwKHBvcHVwX2UxNjMwYjQxZjljNzQyMTI5YzNlOTljZjFkZmFjOGYzKQogICAgICAgIDsKCiAgICAgICAgCiAgICAKICAgIAogICAgICAgICAgICB2YXIgZmVhdHVyZV9ncm91cF84OGI3NTFjZTlkODM0MDRiYTEzOTcxOWU1MzgyOGYwNSA9IEwuZmVhdHVyZUdyb3VwKAogICAgICAgICAgICAgICAge30KICAgICAgICAgICAgKS5hZGRUbyhtYXBfMzY4YTg3OWQ5MzdlNDU2NmEyZTVhNjU2MTEyZjlkYjEpOwogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb2x5X2xpbmVfNzk1ZGExZTcyN2NkNGZlNTkwMWQxNTA4ZDI1NmY0ZWEgPSBMLnBvbHlsaW5lKAogICAgICAgICAgICAgICAgW1s0My4yNjMzNDk0ODU3Mzg0MiwgLTIuOTYzNDM3OTUzMTA3NzU3XSwgWzQzLjI2MzMwODA1MTgxNzE2LCAtMi45NjI0MDExNDYxMzI3NTRdLCBbNDMuMjYxMTUzODAwOTI1NzIsIC0yLjk1OTUyNjEzMTUwMTk5NjNdLCBbNDMuMjYwNjc1OTc0NDU4NTIsIC0yLjk1NTk0ODE0ODc5MTY5Ml0sIFs0My4yNTk5Njg4ODg2MTI3OTYsIC0yLjk1MTIzNzY2NjE1Mjg3MzZdLCBbNDMuMjYxMDEyNjUxNDk5MDQ0LCAtMi45NDg1NDc3MjAyMDM0NF0sIFs0My4yNjQ5MjYxNjUzNDEzMzYsIC0yLjk0NDA1OTk3MDk0MjI5MDhdLCBbNDMuMjY0MTQ3NDY5MTg4Nzg1LCAtMi45NDA1MTk1NDA0ODE0NjddLCBbNDMuMjYzMzQ4MDExNTQyNzQsIC0yLjkzNjg2OTI3MTAzMDI2MzddLCBbNDMuMjYyNjkwNzYxOTc3MDMsIC0yLjkzMzc1MDk5NjQzMTU1OV0sIFs0My4yNjE1Mjk5NDY0MDAxNzQsIC0yLjkyODQ3NjU4MDg4NDY1MTNdLCBbNDMuMjYzOTM4NzU5MTgwODgsIC0yLjkyMzU3OTA4MDQ4MDcyMjddLCBbNDMuMjY1MjMwODY1MzMwOTA2LCAtMi45MjUyMjM5Nzc4MzMyNDM2XSwgWzQzLjI2NzE4NDYwMzM3OTAxNSwgLTIuOTI1MTg0MzY2MjcxNDc4N10sIFs0My4yNjkzMDcxNTQzNTgzLCAtMi45MjQ2MTE1Njg4NzIxNDVdLCBbNDMuMjY3MTc1NTcyNDM0NDYsIC0yLjkyMTMzNDU0MzU0MzUyMzRdLCBbNDMuMjY2NzA5MTYyMjA4NzMsIC0yLjkxOTczNzk1NDEwODExNDNdLCBbNDMuMjY1OTY0NTEyOTk3OTk2LCAtMi45MTgwODU3MzMxMDM2NzgyXV0sCiAgICAgICAgICAgICAgICB7ImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLCAiY29sb3IiOiAiI2ZjOGQ2MiIsICJkYXNoQXJyYXkiOiBudWxsLCAiZGFzaE9mZnNldCI6IG51bGwsICJmaWxsIjogZmFsc2UsICJmaWxsQ29sb3IiOiAiI2ZjOGQ2MiIsICJmaWxsT3BhY2l0eSI6IDAuMiwgImZpbGxSdWxlIjogImV2ZW5vZGQiLCAibGluZUNhcCI6ICJyb3VuZCIsICJsaW5lSm9pbiI6ICJyb3VuZCIsICJub0NsaXAiOiBmYWxzZSwgIm9wYWNpdHkiOiAxLjAsICJzbW9vdGhGYWN0b3IiOiAxLjAsICJzdHJva2UiOiB0cnVlLCAid2VpZ2h0IjogM30KICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzg4Yjc1MWNlOWQ4MzQwNGJhMTM5NzE5ZTUzODI4ZjA1KTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBwb3B1cF80ZjJhMDgwZGI3Yzk0ZjRmODQ1MTRhMDY3ZDYwY2I4NiA9IEwucG9wdXAoeyJtYXhXaWR0aCI6ICIxMDAlIn0pOwoKICAgICAgICAKICAgICAgICAgICAgdmFyIGh0bWxfOTlhZDM2MmY2MjI1NGM3Yzg2YzhmNmFiMDg3OGE1ZWMgPSAkKGA8ZGl2IGlkPSJodG1sXzk5YWQzNjJmNjIyNTRjN2M4NmM4ZjZhYjA4NzhhNWVjIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij48dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCB0YWJsZS1ob3ZlciI+PHRyPjx0aD5kaXJlY3Rpb25faWQ8L3RoPjx0ZD48L3RkPjwvdHI+PHRyPjx0aD5yb3V0ZV9pZDwvdGg+PHRkPjIwNjwvdGQ+PC90cj48dHI+PHRoPnNlcnZpY2VfaWQ8L3RoPjx0ZD4xPC90ZD48L3RyPjx0cj48dGg+c2hhcGVfaWQ8L3RoPjx0ZD5zaGFwZV8xMjI8L3RkPjwvdHI+PHRyPjx0aD50cmlwX2hlYWRzaWduPC90aD48dGQ+IEFsdGFtaXJhPC90ZD48L3RyPjx0cj48dGg+dHJpcF9pZDwvdGg+PHRkPjQxNjcyNjwvdGQ+PC90cj48L3RhYmxlPjwvZGl2PmApWzBdOwogICAgICAgICAgICBwb3B1cF80ZjJhMDgwZGI3Yzk0ZjRmODQ1MTRhMDY3ZDYwY2I4Ni5zZXRDb250ZW50KGh0bWxfOTlhZDM2MmY2MjI1NGM3Yzg2YzhmNmFiMDg3OGE1ZWMpOwogICAgICAgIAoKICAgICAgICBwb2x5X2xpbmVfNzk1ZGExZTcyN2NkNGZlNTkwMWQxNTA4ZDI1NmY0ZWEuYmluZFBvcHVwKHBvcHVwXzRmMmEwODBkYjdjOTRmNGY4NDUxNGEwNjdkNjBjYjg2KQogICAgICAgIDsKCiAgICAgICAgCiAgICAKICAgIAogICAgICAgICAgICB2YXIgZmVhdHVyZV9ncm91cF84ZTIzZTIzNzYxZGI0ZDk0OTBlMTExZjcyNTI3OTdlOSA9IEwuZmVhdHVyZUdyb3VwKAogICAgICAgICAgICAgICAge30KICAgICAgICAgICAgKS5hZGRUbyhtYXBfMzY4YTg3OWQ5MzdlNDU2NmEyZTVhNjU2MTEyZjlkYjEpOwogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb2x5X2xpbmVfMmI0MTBmZmRlNzQ0NGM0YWJiY2IzY2YxZjVkMDRjODYgPSBMLnBvbHlsaW5lKAogICAgICAgICAgICAgICAgW1s0My4yNTA4MTg2NzYzMTU4NywgLTIuOTA0NjM2MTQ2NzgwNDk5OF0sIFs0My4yNTI1NjE5MzkyNzc2OSwgLTIuOTAyMzM3MDYzMTA4MTk1M10sIFs0My4yNTUwNDUxNjY4NDMwNTQsIC0yLjkwMDk4Nzk4NjMyOTIzMjNdLCBbNDMuMjU2MzAzMjIyNDc2MDQsIC0yLjkwMzgyNzUxOTU4NzMyOTNdLCBbNDMuMjU3MDM1NTUzNTgwNTgsIC0yLjkwNjg1Mjg0NTQwNTczMTRdLCBbNDMuMjU3OTc1MzY0NzMzNDU0LCAtMi45MTA5NTEwODQwNTI0NDkzXSwgWzQzLjI2MDY1ODE0Mjk0NzU5LCAtMi45MTI1OTQ2NDMzODgwODhdLCBbNDMuMjYxNTMxMDAyMDY1NDEsIC0yLjkxNTI3NDI2NzU0NDQ0NjddLCBbNDMuMjY0OTAwMjczODQ1NDYsIC0yLjkxODMzNTczMjIwMDI2MDhdLCBbNDMuMjY0OTgyMjYxMjg4NzUsIC0yLjkyMjQ3NjQ3MDc1MDI1OTddLCBbNDMuMjYyODQ1MTIxMTIyMTA1LCAtMi45MjMwNTkxNDMzOTk4NjE2XSwgWzQzLjI1OTc5NTgzMzEyMzI5LCAtMi45MjQwODcyNzkzMTM5NDldLCBbNDMuMjYwODQ5MTQxNTY2OCwgLTIuOTI3OTE2ODI1MzQwMzIxNl0sIFs0My4yNTc1OTI5MzAxMTY3MiwgLTIuOTMzNTM0MjkwMDYwNDQxM10sIFs0My4yNTY1MTAzMDE5MzYwNDYsIC0yLjkzMTc1ODYwNDU1OTE5N10sIFs0My4yNTQzMjk5NTU4MTM5MywgLTIuOTMyMDgzNjU4NzI1NTQ5N10sIFs0My4yNTI3MjM2MjExOTg0NywgLTIuOTMyNjI0OTYwODA5MzMzXSwgWzQzLjI1MDUzMTEzMzU2ODU2NSwgLTIuOTI5OTA1MDQ0Nzk5ODQ5NF0sIFs0My4yNDkzNTQ4NTU0ODQxMzUsIC0yLjkyNzkwNzUzNDA0MTAzNjVdLCBbNDMuMjQ5NDE3NjEwMjcwODgsIC0yLjkyNjg5ODg5NzA1NTMxMDVdXSwKICAgICAgICAgICAgICAgIHsiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsICJjb2xvciI6ICIjOGRhMGNiIiwgImRhc2hBcnJheSI6IG51bGwsICJkYXNoT2Zmc2V0IjogbnVsbCwgImZpbGwiOiBmYWxzZSwgImZpbGxDb2xvciI6ICIjOGRhMGNiIiwgImZpbGxPcGFjaXR5IjogMC4yLCAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsICJsaW5lQ2FwIjogInJvdW5kIiwgImxpbmVKb2luIjogInJvdW5kIiwgIm5vQ2xpcCI6IGZhbHNlLCAib3BhY2l0eSI6IDEuMCwgInNtb290aEZhY3RvciI6IDEuMCwgInN0cm9rZSI6IHRydWUsICJ3ZWlnaHQiOiAzfQogICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfOGUyM2UyMzc2MWRiNGQ5NDkwZTExMWY3MjUyNzk3ZTkpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIHBvcHVwX2VkZjhkOGEwNmE0OTQwNGQ5YzVlYTViNjAwMTcwMWEwID0gTC5wb3B1cCh7Im1heFdpZHRoIjogIjEwMCUifSk7CgogICAgICAgIAogICAgICAgICAgICB2YXIgaHRtbF8wMTc5OGI3ZThlMDQ0ZWU0OGM5NGUwMTgwYzQxNzRkMiA9ICQoYDxkaXYgaWQ9Imh0bWxfMDE3OThiN2U4ZTA0NGVlNDhjOTRlMDE4MGM0MTc0ZDIiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPjx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIHRhYmxlLWhvdmVyIj48dHI+PHRoPmRpcmVjdGlvbl9pZDwvdGg+PHRkPjwvdGQ+PC90cj48dHI+PHRoPnJvdXRlX2lkPC90aD48dGQ+MjA3PC90ZD48L3RyPjx0cj48dGg+c2VydmljZV9pZDwvdGg+PHRkPjE8L3RkPjwvdHI+PHRyPjx0aD5zaGFwZV9pZDwvdGg+PHRkPnNoYXBlXzAyMjwvdGQ+PC90cj48dHI+PHRoPnRyaXBfaGVhZHNpZ248L3RoPjx0ZD4gTWlyaWJpbGxhPC90ZD48L3RyPjx0cj48dGg+dHJpcF9pZDwvdGg+PHRkPjQwOTY1ODwvdGQ+PC90cj48L3RhYmxlPjwvZGl2PmApWzBdOwogICAgICAgICAgICBwb3B1cF9lZGY4ZDhhMDZhNDk0MDRkOWM1ZWE1YjYwMDE3MDFhMC5zZXRDb250ZW50KGh0bWxfMDE3OThiN2U4ZTA0NGVlNDhjOTRlMDE4MGM0MTc0ZDIpOwogICAgICAgIAoKICAgICAgICBwb2x5X2xpbmVfMmI0MTBmZmRlNzQ0NGM0YWJiY2IzY2YxZjVkMDRjODYuYmluZFBvcHVwKHBvcHVwX2VkZjhkOGEwNmE0OTQwNGQ5YzVlYTViNjAwMTcwMWEwKQogICAgICAgIDsKCiAgICAgICAgCiAgICAKICAgIAogICAgICAgICAgICB2YXIgZmVhdHVyZV9ncm91cF9kOWQ4NGUwY2QzYjg0NTlkYjM4NWYxNjU4NDc3ZDMxYiA9IEwuZmVhdHVyZUdyb3VwKAogICAgICAgICAgICAgICAge30KICAgICAgICAgICAgKS5hZGRUbyhtYXBfMzY4YTg3OWQ5MzdlNDU2NmEyZTVhNjU2MTEyZjlkYjEpOwogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb2x5X2xpbmVfYzNiNjZjYzRmNzhkNDE4MDgxNjNjNjA0ZGU3ZDAwYjggPSBMLnBvbHlsaW5lKAogICAgICAgICAgICAgICAgW1s0My4yNDk0MTc2MTAyNzA4OCwgLTIuOTI2ODk4ODk3MDU1MzEwNV0sIFs0My4yNTEyMTY4MzUyMzc3MDYsIC0yLjkyOTI2MzUzNzkwMDUxNTRdLCBbNDMuMjUyMzQ4MzYwNDI2NjQsIC0yLjkzMDc1OTE4OTMzNzA1MzNdLCBbNDMuMjUyMzQ4MzYwNDI2NjQsIC0yLjkzMDc1OTE4OTMzNzA1MzNdLCBbNDMuMjUyNzg2MjQwNjg5NTQ1LCAtMi45MzI1NTcwMDQ5NjE4OTY4XSwgWzQzLjI1Mjc4NjI0MDY4OTU0NSwgLTIuOTMyNTU3MDA0OTYxODk2OF0sIFs0My4yNTQ4Nzc5NDM1OTI0OSwgLTIuOTMzNDAzOTgzNjE1NTc1NF0sIFs0My4yNTYzNDM4Mjg1NTk3OSwgLTIuOTMzMjE1MTcyNTM4NzkzXSwgWzQzLjI1NDg3Nzk0MzU5MjQ5LCAtMi45MzM0MDM5ODM2MTU1NzU0XSwgWzQzLjI1NjM0MzgyODU1OTc5LCAtMi45MzMyMTUxNzI1Mzg3OTNdLCBbNDMuMjU3OTE0NjIxNjU1NzgsIC0yLjkzMjgyMjI2MjI4ODA5MV0sIFs0My4yNTc5MTQ2MjE2NTU3OCwgLTIuOTMyODIyMjYyMjg4MDkxXSwgWzQzLjI2MTQ0ODE2ODIwNTc5LCAtMi45MjcxOTAxNzQ2MzQ4Njg3XSwgWzQzLjI2MTQ0ODE2ODIwNTc5LCAtMi45MjcxOTAxNzQ2MzQ4Njg3XSwgWzQzLjI2NDA5OTUxMzUwMDAyLCAtMi45MjI1OTAxMTIwNzI1ODc3XSwgWzQzLjI2NDA5OTUxMzUwMDAyLCAtMi45MjI1OTAxMTIwNzI1ODc3XSwgWzQzLjI2NDc1MDM3MzU0NzA0NSwgLTIuOTE4NDEzODgwMDM1OTk4NF0sIFs0My4yNjA3ODUxNzgzMjU1NSwgLTIuOTE0ODA0NDU0MTk2MDE4M10sIFs0My4yNjQ3NTAzNzM1NDcwNDUsIC0yLjkxODQxMzg4MDAzNTk5ODRdLCBbNDMuMjYwNzg1MTc4MzI1NTUsIC0yLjkxNDgwNDQ1NDE5NjAxODNdLCBbNDMuMjU4OTgxNTcxMzU2NzA2LCAtMi45MTM4NjcwNTc0MjM3NDM3XSwgWzQzLjI1ODk4MTU3MTM1NjcwNiwgLTIuOTEzODY3MDU3NDIzNzQzN10sIFs0My4yNTcyMjk3MTY1ODA3LCAtMi45MDk4NDIxNzU0Mjk4OTM1XSwgWzQzLjI1Njg0MzQ0NzE3NjI5LCAtMi45MDY4MzE4NjAwMjk3NjgyXSwgWzQzLjI1NzIyOTcxNjU4MDcsIC0yLjkwOTg0MjE3NTQyOTg5MzVdLCBbNDMuMjU2ODQzNDQ3MTc2MjksIC0yLjkwNjgzMTg2MDAyOTc2ODJdLCBbNDMuMjU2NDY1NzMyNTQ3OTIsIC0yLjkwNDY5MjY3NTIxODMxMDRdLCBbNDMuMjU1MDQyMzY3NTM3ODMsIC0yLjkwMTEyNTg1MzExNDgwODVdLCBbNDMuMjU2NDY1NzMyNTQ3OTIsIC0yLjkwNDY5MjY3NTIxODMxMDRdLCBbNDMuMjUzMzYwMDMxNjQ4ODUsIC0yLjkwMzcyMzMzNzMzOTQ4M10sIFs0My4yNTUwNDIzNjc1Mzc4MywgLTIuOTAxMTI1ODUzMTE0ODA4NV0sIFs0My4yNTMzNjAwMzE2NDg4NSwgLTIuOTAzNzIzMzM3MzM5NDgzXSwgWzQzLjI1MDgxODY3NjMxNTg3LCAtMi45MDQ2MzYxNDY3ODA0OTk4XSwgWzQzLjI1MDgxODY3NjMxNTg3LCAtMi45MDQ2MzYxNDY3ODA0OTk4XV0sCiAgICAgICAgICAgICAgICB7ImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLCAiY29sb3IiOiAiI2U3OGFjMyIsICJkYXNoQXJyYXkiOiBudWxsLCAiZGFzaE9mZnNldCI6IG51bGwsICJmaWxsIjogZmFsc2UsICJmaWxsQ29sb3IiOiAiI2U3OGFjMyIsICJmaWxsT3BhY2l0eSI6IDAuMiwgImZpbGxSdWxlIjogImV2ZW5vZGQiLCAibGluZUNhcCI6ICJyb3VuZCIsICJsaW5lSm9pbiI6ICJyb3VuZCIsICJub0NsaXAiOiBmYWxzZSwgIm9wYWNpdHkiOiAxLjAsICJzbW9vdGhGYWN0b3IiOiAxLjAsICJzdHJva2UiOiB0cnVlLCAid2VpZ2h0IjogM30KICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2Q5ZDg0ZTBjZDNiODQ1OWRiMzg1ZjE2NTg0NzdkMzFiKTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBwb3B1cF9hZmEwYTk3NTRhM2U0NjUzODQzZGY4OGIxZmRiMDg2MyA9IEwucG9wdXAoeyJtYXhXaWR0aCI6ICIxMDAlIn0pOwoKICAgICAgICAKICAgICAgICAgICAgdmFyIGh0bWxfMmFkNjAwYzc2MjUxNGY4NzlmZmM4YmNhMTQxMzE1NGUgPSAkKGA8ZGl2IGlkPSJodG1sXzJhZDYwMGM3NjI1MTRmODc5ZmZjOGJjYTE0MTMxNTRlIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij48dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCB0YWJsZS1ob3ZlciI+PHRyPjx0aD5kaXJlY3Rpb25faWQ8L3RoPjx0ZD48L3RkPjwvdHI+PHRyPjx0aD5yb3V0ZV9pZDwvdGg+PHRkPjIwODwvdGQ+PC90cj48dHI+PHRoPnNlcnZpY2VfaWQ8L3RoPjx0ZD4xPC90ZD48L3RyPjx0cj48dGg+c2hhcGVfaWQ8L3RoPjx0ZD5zaGFwZV8wNzY8L3RkPjwvdHI+PHRyPjx0aD50cmlwX2hlYWRzaWduPC90aD48dGQ+IE1pcmliaWxsYTwvdGQ+PC90cj48dHI+PHRoPnRyaXBfaWQ8L3RoPjx0ZD40MzI0MjE8L3RkPjwvdHI+PC90YWJsZT48L2Rpdj5gKVswXTsKICAgICAgICAgICAgcG9wdXBfYWZhMGE5NzU0YTNlNDY1Mzg0M2RmODhiMWZkYjA4NjMuc2V0Q29udGVudChodG1sXzJhZDYwMGM3NjI1MTRmODc5ZmZjOGJjYTE0MTMxNTRlKTsKICAgICAgICAKCiAgICAgICAgcG9seV9saW5lX2MzYjY2Y2M0Zjc4ZDQxODA4MTYzYzYwNGRlN2QwMGI4LmJpbmRQb3B1cChwb3B1cF9hZmEwYTk3NTRhM2U0NjUzODQzZGY4OGIxZmRiMDg2MykKICAgICAgICA7CgogICAgICAgIAogICAgCiAgICAKICAgICAgICAgICAgdmFyIGZlYXR1cmVfZ3JvdXBfOGRmMTQzOGVkMmY5NDYyMmJlZThlZDllMGQxODVlMjAgPSBMLmZlYXR1cmVHcm91cCgKICAgICAgICAgICAgICAgIHt9CiAgICAgICAgICAgICkuYWRkVG8obWFwXzM2OGE4NzlkOTM3ZTQ1NjZhMmU1YTY1NjExMmY5ZGIxKTsKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9seV9saW5lX2JmM2MwNDA2N2QxMDQxMjg5NjhiYjM4YjE5YWY2NzAxID0gTC5wb2x5bGluZSgKICAgICAgICAgICAgICAgIFtbNDMuMjU0NDU0NjIzMjMzMDksIC0yLjkxMDc1MzUzNzIxMjk3NV0sIFs0My4yNTQ5MTE4MjgxMzg4LCAtMi45MDcyMDg0MjI4MDkyNjY1XSwgWzQzLjI1NjEyMDkwOTAwNjExLCAtMi45MDQ0MTMzNTgzNjY5OTM4XSwgWzQzLjI1ODQ0MDgwNTQ5MjA2NCwgLTIuOTAyNzIyODkyNDc1MTc3XSwgWzQzLjI1OTMyODg5NzgzMzIyLCAtMi45MDAyNzkzMjcxNzE3MzI2XSwgWzQzLjI1NzcwODMxMzc2MTc0NiwgLTIuODk5MDQzOTY3Mjc2NDM0M10sIFs0My4yNTc5ODgxODU4NDc4NCwgLTIuODk4MDA2MzA4ODY0NTcxM10sIFs0My4yNTg5MDY5MDYyNjUxNzUsIC0yLjg5NzcwMjc2MDU1NzgwMjddLCBbNDMuMjU3Mzc5NTY3NDA4MTksIC0yLjg5NjUwNjExNjY5Mzc0NF0sIFs0My4yNTg3NTU2ODc0Mzc5MDUsIC0yLjg5NjcyMzgxMjEwMzYzMl0sIFs0My4yNjA0OTgxNTkzNDU1NjYsIC0yLjg5NzkwNzI2ODY4ODQ2NTddLCBbNDMuMjYwODQ5NjQ1MTI2MTksIC0yLjg5ODgyNzIzNDUyMzA0NV1dLAogICAgICAgICAgICAgICAgeyJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwgImNvbG9yIjogIiNhNmQ4NTQiLCAiZGFzaEFycmF5IjogbnVsbCwgImRhc2hPZmZzZXQiOiBudWxsLCAiZmlsbCI6IGZhbHNlLCAiZmlsbENvbG9yIjogIiNhNmQ4NTQiLCAiZmlsbE9wYWNpdHkiOiAwLjIsICJmaWxsUnVsZSI6ICJldmVub2RkIiwgImxpbmVDYXAiOiAicm91bmQiLCAibGluZUpvaW4iOiAicm91bmQiLCAibm9DbGlwIjogZmFsc2UsICJvcGFjaXR5IjogMS4wLCAic21vb3RoRmFjdG9yIjogMS4wLCAic3Ryb2tlIjogdHJ1ZSwgIndlaWdodCI6IDN9CiAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF84ZGYxNDM4ZWQyZjk0NjIyYmVlOGVkOWUwZDE4NWUyMCk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgcG9wdXBfNGNhOTk0MTU5ZDYwNDM5NjhiMDc1MGI4NDkxNzMzODYgPSBMLnBvcHVwKHsibWF4V2lkdGgiOiAiMTAwJSJ9KTsKCiAgICAgICAgCiAgICAgICAgICAgIHZhciBodG1sX2RlNjU3NDA5YTRkMDRiMDhiMDkwODY1MTFhZTFjY2I5ID0gJChgPGRpdiBpZD0iaHRtbF9kZTY1NzQwOWE0ZDA0YjA4YjA5MDg2NTExYWUxY2NiOSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+PHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQgdGFibGUtaG92ZXIiPjx0cj48dGg+ZGlyZWN0aW9uX2lkPC90aD48dGQ+PC90ZD48L3RyPjx0cj48dGg+cm91dGVfaWQ8L3RoPjx0ZD4yMDk8L3RkPjwvdHI+PHRyPjx0aD5zZXJ2aWNlX2lkPC90aD48dGQ+MTwvdGQ+PC90cj48dHI+PHRoPnNoYXBlX2lkPC90aD48dGQ+c2hhcGVfMDI4PC90ZD48L3RyPjx0cj48dGg+dHJpcF9oZWFkc2lnbjwvdGg+PHRkPiBTYW50dXR4dTwvdGQ+PC90cj48dHI+PHRoPnRyaXBfaWQ8L3RoPjx0ZD40MTE2NTQ8L3RkPjwvdHI+PC90YWJsZT48L2Rpdj5gKVswXTsKICAgICAgICAgICAgcG9wdXBfNGNhOTk0MTU5ZDYwNDM5NjhiMDc1MGI4NDkxNzMzODYuc2V0Q29udGVudChodG1sX2RlNjU3NDA5YTRkMDRiMDhiMDkwODY1MTFhZTFjY2I5KTsKICAgICAgICAKCiAgICAgICAgcG9seV9saW5lX2JmM2MwNDA2N2QxMDQxMjg5NjhiYjM4YjE5YWY2NzAxLmJpbmRQb3B1cChwb3B1cF80Y2E5OTQxNTlkNjA0Mzk2OGIwNzUwYjg0OTE3MzM4NikKICAgICAgICA7CgogICAgICAgIAogICAgCiAgICAKICAgICAgICAgICAgdmFyIGZlYXR1cmVfZ3JvdXBfY2FkMzAyOTY4ZTJmNDU3MmFlZTg2NjVjODBlNDZkZDggPSBMLmZlYXR1cmVHcm91cCgKICAgICAgICAgICAgICAgIHt9CiAgICAgICAgICAgICkuYWRkVG8obWFwXzM2OGE4NzlkOTM3ZTQ1NjZhMmU1YTY1NjExMmY5ZGIxKTsKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9seV9saW5lXzkwNTNjODBiMjUwZDQ3NTc5ZDgwY2EwYzAxMGE3MTgzID0gTC5wb2x5bGluZSgKICAgICAgICAgICAgICAgIFtbNDMuMjYwODQ5NjQ1MTI2MTksIC0yLjg5ODgyNzIzNDUyMzA0NV0sIFs0My4yNTczNzg5NTM2OTg4NiwgLTIuODk5MTkxMTg4NjExMzkwNl0sIFs0My4yNTU1Njk5NTcxOTY0LCAtMi45MDA3NzU1NjU3MTRdLCBbNDMuMjUzMDI2ODQ1NDY0NTc1LCAtMi45MDIyMTE4NzYxNjUyMTldLCBbNDMuMjUwMzM2NDEwMTcwNzQ2LCAtMi45MDM2NzE5MzE3NDkyOTA3XSwgWzQzLjI0OTU1NjIyNTk1MDgxLCAtMi45MDg0MDE2MDAwMTYwNzhdLCBbNDMuMjUxNjU4NzQ5Njc1NzIsIC0yLjkxMDU4ODI5MjA0OTU2OTZdLCBbNDMuMjU0NDU0NjIzMjMzMDksIC0yLjkxMDc1MzUzNzIxMjk3NV1dLAogICAgICAgICAgICAgICAgeyJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwgImNvbG9yIjogIiNmZmQ5MmYiLCAiZGFzaEFycmF5IjogbnVsbCwgImRhc2hPZmZzZXQiOiBudWxsLCAiZmlsbCI6IGZhbHNlLCAiZmlsbENvbG9yIjogIiNmZmQ5MmYiLCAiZmlsbE9wYWNpdHkiOiAwLjIsICJmaWxsUnVsZSI6ICJldmVub2RkIiwgImxpbmVDYXAiOiAicm91bmQiLCAibGluZUpvaW4iOiAicm91bmQiLCAibm9DbGlwIjogZmFsc2UsICJvcGFjaXR5IjogMS4wLCAic21vb3RoRmFjdG9yIjogMS4wLCAic3Ryb2tlIjogdHJ1ZSwgIndlaWdodCI6IDN9CiAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9jYWQzMDI5NjhlMmY0NTcyYWVlODY2NWM4MGU0NmRkOCk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgcG9wdXBfZTA0NGE4OGQwMDk0NDhlYjk2NTZlZjdmNzJkYWNiMGIgPSBMLnBvcHVwKHsibWF4V2lkdGgiOiAiMTAwJSJ9KTsKCiAgICAgICAgCiAgICAgICAgICAgIHZhciBodG1sXzM0NTllY2Y2NzQwODQxODdhZDZjZWRlMDY4MzdmOTM5ID0gJChgPGRpdiBpZD0iaHRtbF8zNDU5ZWNmNjc0MDg0MTg3YWQ2Y2VkZTA2ODM3ZjkzOSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+PHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQgdGFibGUtaG92ZXIiPjx0cj48dGg+ZGlyZWN0aW9uX2lkPC90aD48dGQ+PC90ZD48L3RyPjx0cj48dGg+cm91dGVfaWQ8L3RoPjx0ZD4yMTA8L3RkPjwvdHI+PHRyPjx0aD5zZXJ2aWNlX2lkPC90aD48dGQ+MTwvdGQ+PC90cj48dHI+PHRoPnNoYXBlX2lkPC90aD48dGQ+c2hhcGVfMDIxPC90ZD48L3RyPjx0cj48dGg+dHJpcF9oZWFkc2lnbjwvdGg+PHRkPiBTYW50dXR4dTwvdGQ+PC90cj48dHI+PHRoPnRyaXBfaWQ8L3RoPjx0ZD40MTE3ODA8L3RkPjwvdHI+PC90YWJsZT48L2Rpdj5gKVswXTsKICAgICAgICAgICAgcG9wdXBfZTA0NGE4OGQwMDk0NDhlYjk2NTZlZjdmNzJkYWNiMGIuc2V0Q29udGVudChodG1sXzM0NTllY2Y2NzQwODQxODdhZDZjZWRlMDY4MzdmOTM5KTsKICAgICAgICAKCiAgICAgICAgcG9seV9saW5lXzkwNTNjODBiMjUwZDQ3NTc5ZDgwY2EwYzAxMGE3MTgzLmJpbmRQb3B1cChwb3B1cF9lMDQ0YTg4ZDAwOTQ0OGViOTY1NmVmN2Y3MmRhY2IwYikKICAgICAgICA7CgogICAgICAgIAogICAgCiAgICAKICAgICAgICAgICAgdmFyIGZlYXR1cmVfZ3JvdXBfZTJlZjhiZWFhMjJlNGViY2E0ZjA3OGFhMGIwZjlhODAgPSBMLmZlYXR1cmVHcm91cCgKICAgICAgICAgICAgICAgIHt9CiAgICAgICAgICAgICkuYWRkVG8obWFwXzM2OGE4NzlkOTM3ZTQ1NjZhMmU1YTY1NjExMmY5ZGIxKTsKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9seV9saW5lX2YxMzNiYjU4YjRlMjQ4Mzg4Y2U3YzY3NTI5NDA1ZjA4ID0gTC5wb2x5bGluZSgKICAgICAgICAgICAgICAgIFtbNDMuMjQwOTc3MzUxNTI5Mjk1LCAtMi45MjE0NjQzMDE0OTg4NzQ2XSwgWzQzLjI0NDE5OTUyMzgzNjkyNiwgLTIuOTE3MzY5NDU0NzA4MjIzNF0sIFs0My4yNDY0NzIzMzI4MzIzMjYsIC0yLjkwOTIyOTQ0MjM1NDMyOV0sIFs0My4yNDY4MjY5MDAzOTkyNTYsIC0yLjkxMTMzMjg3ODgwMTkxMDZdLCBbNDMuMjQ4NDUwNjQzMTEyNjc2LCAtMi45MTI1NjgzNTEyNjgxMjhdLCBbNDMuMjUwNjc1Mjc2MTYyODIsIC0yLjkxMTg0MzAzNjE4NzE5N10sIFs0My4yNTA5OTk2NTM4Nzk1NywgLTIuOTE0NzIxMzI2NTg0MDkwNl0sIFs0My4yNDk5OTIwNjU1MTM2MywgLTIuOTE3NDc4MjU3MTU3MDY4NV0sIFs0My4yNDg4ODQ0NzMwNDk2OCwgLTIuOTE5MzM3MDM0NDkzNTA5NV0sIFs0My4yNTE1MzEzNzUyNzYxLCAtMi45MjE0MTQ0NDUyNTE1MDY3XSwgWzQzLjI1MzU5NjQ3MzY4ODQ3NSwgLTIuOTIxMjc0MDgwMTQxNTI5M10sIFs0My4yNTUwMzA2NTIxMjg3LCAtMi45MjIwMDE3MTkxMzEwNzY4XSwgWzQzLjI1NjU5NjMxNDgxMzM4NiwgLTIuOTI1NzA3OTA0NzA5NDU0NV0sIFs0My4yNTk3OTU4MzMxMjMyOSwgLTIuOTI0MDg3Mjc5MzEzOTQ5XSwgWzQzLjI2MTQ3ODg5MDA2MDk4NSwgLTIuOTI3ODI3ODU2ODUxMjg4OF0sIFs0My4yNjA3NDYwNTMzNzYwMjUsIC0yLjkyOTA0NTcwMzIyNDE0NF1dLAogICAgICAgICAgICAgICAgeyJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwgImNvbG9yIjogIiNlNWM0OTQiLCAiZGFzaEFycmF5IjogbnVsbCwgImRhc2hPZmZzZXQiOiBudWxsLCAiZmlsbCI6IGZhbHNlLCAiZmlsbENvbG9yIjogIiNlNWM0OTQiLCAiZmlsbE9wYWNpdHkiOiAwLjIsICJmaWxsUnVsZSI6ICJldmVub2RkIiwgImxpbmVDYXAiOiAicm91bmQiLCAibGluZUpvaW4iOiAicm91bmQiLCAibm9DbGlwIjogZmFsc2UsICJvcGFjaXR5IjogMS4wLCAic21vb3RoRmFjdG9yIjogMS4wLCAic3Ryb2tlIjogdHJ1ZSwgIndlaWdodCI6IDN9CiAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9lMmVmOGJlYWEyMmU0ZWJjYTRmMDc4YWEwYjBmOWE4MCk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgcG9wdXBfYmFkYmM2MmI0NzdkNDM0MWFlNzZkZDAzODg0ZTliYWUgPSBMLnBvcHVwKHsibWF4V2lkdGgiOiAiMTAwJSJ9KTsKCiAgICAgICAgCiAgICAgICAgICAgIHZhciBodG1sXzQxYWNhYjdmZDg4ODQ0NmNhZDcwOTRiZWNkNTNiOGJhID0gJChgPGRpdiBpZD0iaHRtbF80MWFjYWI3ZmQ4ODg0NDZjYWQ3MDk0YmVjZDUzYjhiYSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+PHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQgdGFibGUtaG92ZXIiPjx0cj48dGg+ZGlyZWN0aW9uX2lkPC90aD48dGQ+PC90ZD48L3RyPjx0cj48dGg+cm91dGVfaWQ8L3RoPjx0ZD4yMTM8L3RkPjwvdHI+PHRyPjx0aD5zZXJ2aWNlX2lkPC90aD48dGQ+MTwvdGQ+PC90cj48dHI+PHRoPnNoYXBlX2lkPC90aD48dGQ+c2hhcGVfMDQwPC90ZD48L3RyPjx0cj48dGg+dHJpcF9oZWFkc2lnbjwvdGg+PHRkPiBQbGF6YSBCaXJpYmlsYTwvdGQ+PC90cj48dHI+PHRoPnRyaXBfaWQ8L3RoPjx0ZD40MTU3Mzk8L3RkPjwvdHI+PC90YWJsZT48L2Rpdj5gKVswXTsKICAgICAgICAgICAgcG9wdXBfYmFkYmM2MmI0NzdkNDM0MWFlNzZkZDAzODg0ZTliYWUuc2V0Q29udGVudChodG1sXzQxYWNhYjdmZDg4ODQ0NmNhZDcwOTRiZWNkNTNiOGJhKTsKICAgICAgICAKCiAgICAgICAgcG9seV9saW5lX2YxMzNiYjU4YjRlMjQ4Mzg4Y2U3YzY3NTI5NDA1ZjA4LmJpbmRQb3B1cChwb3B1cF9iYWRiYzYyYjQ3N2Q0MzQxYWU3NmRkMDM4ODRlOWJhZSkKICAgICAgICA7CgogICAgICAgIAogICAgCiAgICAKICAgICAgICAgICAgdmFyIGZlYXR1cmVfZ3JvdXBfNmMxNWU4MGE0NTI2NDlkZjk5Y2ViZWU1NDI2MzEzOWIgPSBMLmZlYXR1cmVHcm91cCgKICAgICAgICAgICAgICAgIHt9CiAgICAgICAgICAgICkuYWRkVG8obWFwXzM2OGE4NzlkOTM3ZTQ1NjZhMmU1YTY1NjExMmY5ZGIxKTsKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9seV9saW5lXzNlODllYjViYzJjYjQzOTE5MjQ2ZjkwYjBkMGRhNmEwID0gTC5wb2x5bGluZSgKICAgICAgICAgICAgICAgIFtbNDMuMjYwNzQ2MDUzMzc2MDI1LCAtMi45MjkwNDU3MDMyMjQxNDRdLCBbNDMuMjY0MDk5NTEzNTAwMDIsIC0yLjkyMjU5MDExMjA3MjU4NzddLCBbNDMuMjY0NzUwMzczNTQ3MDQ1LCAtMi45MTg0MTM4ODAwMzU5OTg0XSwgWzQzLjI2MTQxODI2ODUxNzgxNSwgLTIuOTE1ODcwMTY3OTY0ODJdLCBbNDMuMjYwMDM3NTc0NDE3MDcsIC0yLjkxNzAxODUzNjcxNzEzMzVdLCBbNDMuMjU3NzU5NjIyMDMyMDgsIC0yLjkxNjgzNDYzOTMxNTgxMzhdLCBbNDMuMjU3MjU1MzU2ODE4ODksIC0yLjkxMzYxMzk4MDAzNTQzODRdLCBbNDMuMjU1OTgzNzc2MzU4Mzg0LCAtMi45MTMwOTgyNzY1NDY2ODk3XSwgWzQzLjI1NDY1NjQyOTgyMzg1LCAtMi45MTQ5NTM1OTIwOTA4NzNdLCBbNDMuMjU0NjIxMDI5ODU4NzU0LCAtMi45MTY5MTMwNDQ3NDI3NDE2XSwgWzQzLjI1MzEyMDUxMzU1ODkwNSwgLTIuOTE1NjE3ODU2ODE5MTIzOF0sIFs0My4yNTE3MTkyNjA2NTA3NiwgLTIuOTE0NjQxOTY4MjMxNjc2XSwgWzQzLjI0OTAzODIyNzgzNDUzLCAtMi45MTM1NTk3OTc5OTg1NjgzXSwgWzQzLjI0Njc4MTk5MjgzMjIyLCAtMi45MTE3NTE5NTY0MjI3NDhdLCBbNDMuMjQ0MjE5MDM1ODk2MjE1LCAtMi45MTc0MjEyMjczNTIwMjQ0XSwgWzQzLjI0NjUwNDA0ODU5Nzc5LCAtMi45MDkyODc2NjYyNzg1MDddLCBbNDMuMjQxNDc3ODYwODA2ODEsIC0yLjkyMTI3MDQ1MjUyMDgzNDRdLCBbNDMuMjQxOTY0MTgwNzA1NTE2LCAtMi45MjM2MzQ0NDg1Mzc5NzE1XSwgWzQzLjI0MzEyODU1MjU4OTk1LCAtMi45MjQ5MDc2NTYwNzM0MzhdLCBbNDMuMjQ0ODQxNzY1NjQ0MTcsIC0yLjkyNDk0MTk2NzMxMjMwMjddLCBbNDMuMjQyNDQ5NzE2MTk1NjIsIC0yLjkyNTU5NTc2NTIwMjA3MzddLCBbNDMuMjQxMjM0NTUxOTEyMzIsIC0yLjkyMzUxNzg0NzMyNjUxNzhdLCBbNDMuMjQwOTc3MzUxNTI5Mjk1LCAtMi45MjE0NjQzMDE0OTg4NzQ2XV0sCiAgICAgICAgICAgICAgICB7ImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLCAiY29sb3IiOiAiI2IzYjNiMyIsICJkYXNoQXJyYXkiOiBudWxsLCAiZGFzaE9mZnNldCI6IG51bGwsICJmaWxsIjogZmFsc2UsICJmaWxsQ29sb3IiOiAiI2IzYjNiMyIsICJmaWxsT3BhY2l0eSI6IDAuMiwgImZpbGxSdWxlIjogImV2ZW5vZGQiLCAibGluZUNhcCI6ICJyb3VuZCIsICJsaW5lSm9pbiI6ICJyb3VuZCIsICJub0NsaXAiOiBmYWxzZSwgIm9wYWNpdHkiOiAxLjAsICJzbW9vdGhGYWN0b3IiOiAxLjAsICJzdHJva2UiOiB0cnVlLCAid2VpZ2h0IjogM30KICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzZjMTVlODBhNDUyNjQ5ZGY5OWNlYmVlNTQyNjMxMzliKTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBwb3B1cF8zNTA0MWJlNDQ2MTA0ZTExYjgyMmExY2QwZjk4YjQzMyA9IEwucG9wdXAoeyJtYXhXaWR0aCI6ICIxMDAlIn0pOwoKICAgICAgICAKICAgICAgICAgICAgdmFyIGh0bWxfNzY1MGM4MWQ1NTRmNDJiMGFkYjJhOGQ1NTNiYmZmMDMgPSAkKGA8ZGl2IGlkPSJodG1sXzc2NTBjODFkNTU0ZjQyYjBhZGIyYThkNTUzYmJmZjAzIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij48dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCB0YWJsZS1ob3ZlciI+PHRyPjx0aD5kaXJlY3Rpb25faWQ8L3RoPjx0ZD48L3RkPjwvdHI+PHRyPjx0aD5yb3V0ZV9pZDwvdGg+PHRkPjIxNDwvdGQ+PC90cj48dHI+PHRoPnNlcnZpY2VfaWQ8L3RoPjx0ZD4xPC90ZD48L3RyPjx0cj48dGg+c2hhcGVfaWQ8L3RoPjx0ZD5zaGFwZV8wOTI8L3RkPjwvdHI+PHRyPjx0aD50cmlwX2hlYWRzaWduPC90aD48dGQ+IFBsYXphIEJpcmliaWxhPC90ZD48L3RyPjx0cj48dGg+dHJpcF9pZDwvdGg+PHRkPjQxNTg3NTwvdGQ+PC90cj48L3RhYmxlPjwvZGl2PmApWzBdOwogICAgICAgICAgICBwb3B1cF8zNTA0MWJlNDQ2MTA0ZTExYjgyMmExY2QwZjk4YjQzMy5zZXRDb250ZW50KGh0bWxfNzY1MGM4MWQ1NTRmNDJiMGFkYjJhOGQ1NTNiYmZmMDMpOwogICAgICAgIAoKICAgICAgICBwb2x5X2xpbmVfM2U4OWViNWJjMmNiNDM5MTkyNDZmOTBiMGQwZGE2YTAuYmluZFBvcHVwKHBvcHVwXzM1MDQxYmU0NDYxMDRlMTFiODIyYTFjZDBmOThiNDMzKQogICAgICAgIDsKCiAgICAgICAgCiAgICAKICAgIAogICAgICAgICAgICB2YXIgZmVhdHVyZV9ncm91cF85ZmY4YmYwMGZhYmE0ZjMxODRlNGQ3NjA4MmY2MTA4NyA9IEwuZmVhdHVyZUdyb3VwKAogICAgICAgICAgICAgICAge30KICAgICAgICAgICAgKS5hZGRUbyhtYXBfMzY4YTg3OWQ5MzdlNDU2NmEyZTVhNjU2MTEyZjlkYjEpOwogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb2x5X2xpbmVfNzQxYmY0MjNlNmIzNDJjZjgxMzgzZGE2ZGY4NmQwNmQgPSBMLnBvbHlsaW5lKAogICAgICAgICAgICAgICAgW1s0My4yNjAzMjkxNDQ2Nzg0NjUsIC0yLjkwNDc0NzE0MjMxMjczMl0sIFs0My4yNTg0NDA4MDU0OTIwNjQsIC0yLjkwMjcyMjg5MjQ3NTE3N10sIFs0My4yNTkzMjg4OTc4MzMyMiwgLTIuOTAwMjc5MzI3MTcxNzMyNl0sIFs0My4yNTczNzg5NTM2OTg4NiwgLTIuODk5MTkxMTg4NjExMzkwNl0sIFs0My4yNTU1Njk5NTcxOTY0LCAtMi45MDA3NzU1NjU3MTRdLCBbNDMuMjUzMDI2ODQ1NDY0NTc1LCAtMi45MDIyMTE4NzYxNjUyMTldLCBbNDMuMjUwMzM2NDEwMTcwNzQ2LCAtMi45MDM2NzE5MzE3NDkyOTA3XSwgWzQzLjI0OTU1NjIyNTk1MDgxLCAtMi45MDg0MDE2MDAwMTYwNzhdLCBbNDMuMjUxNjU4NzQ5Njc1NzIsIC0yLjkxMDU4ODI5MjA0OTU2OTZdLCBbNDMuMjU0NDU0NjIzMjMzMDksIC0yLjkxMDc1MzUzNzIxMjk3NV1dLAogICAgICAgICAgICAgICAgeyJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwgImNvbG9yIjogIiM2NmMyYTUiLCAiZGFzaEFycmF5IjogbnVsbCwgImRhc2hPZmZzZXQiOiBudWxsLCAiZmlsbCI6IGZhbHNlLCAiZmlsbENvbG9yIjogIiM2NmMyYTUiLCAiZmlsbE9wYWNpdHkiOiAwLjIsICJmaWxsUnVsZSI6ICJldmVub2RkIiwgImxpbmVDYXAiOiAicm91bmQiLCAibGluZUpvaW4iOiAicm91bmQiLCAibm9DbGlwIjogZmFsc2UsICJvcGFjaXR5IjogMS4wLCAic21vb3RoRmFjdG9yIjogMS4wLCAic3Ryb2tlIjogdHJ1ZSwgIndlaWdodCI6IDN9CiAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF85ZmY4YmYwMGZhYmE0ZjMxODRlNGQ3NjA4MmY2MTA4Nyk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgcG9wdXBfZDc0NTUzZGMzNDIwNGE3Y2JlM2FhMTFjNTY0N2VjYmIgPSBMLnBvcHVwKHsibWF4V2lkdGgiOiAiMTAwJSJ9KTsKCiAgICAgICAgCiAgICAgICAgICAgIHZhciBodG1sX2VhNGIzNDJmODM3MTQyZThiMzJiODE4MTEyYjFlNDZkID0gJChgPGRpdiBpZD0iaHRtbF9lYTRiMzQyZjgzNzE0MmU4YjMyYjgxODExMmIxZTQ2ZCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+PHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQgdGFibGUtaG92ZXIiPjx0cj48dGg+ZGlyZWN0aW9uX2lkPC90aD48dGQ+PC90ZD48L3RyPjx0cj48dGg+cm91dGVfaWQ8L3RoPjx0ZD4yMTU8L3RkPjwvdHI+PHRyPjx0aD5zZXJ2aWNlX2lkPC90aD48dGQ+MTwvdGQ+PC90cj48dHI+PHRoPnNoYXBlX2lkPC90aD48dGQ+c2hhcGVfMDIzPC90ZD48L3RyPjx0cj48dGg+dHJpcF9oZWFkc2lnbjwvdGg+PHRkPiBTYW50dXR4dTwvdGQ+PC90cj48dHI+PHRoPnRyaXBfaWQ8L3RoPjx0ZD40MTYyODk8L3RkPjwvdHI+PC90YWJsZT48L2Rpdj5gKVswXTsKICAgICAgICAgICAgcG9wdXBfZDc0NTUzZGMzNDIwNGE3Y2JlM2FhMTFjNTY0N2VjYmIuc2V0Q29udGVudChodG1sX2VhNGIzNDJmODM3MTQyZThiMzJiODE4MTEyYjFlNDZkKTsKICAgICAgICAKCiAgICAgICAgcG9seV9saW5lXzc0MWJmNDIzZTZiMzQyY2Y4MTM4M2RhNmRmODZkMDZkLmJpbmRQb3B1cChwb3B1cF9kNzQ1NTNkYzM0MjA0YTdjYmUzYWExMWM1NjQ3ZWNiYikKICAgICAgICA7CgogICAgICAgIAogICAgCiAgICAKICAgICAgICAgICAgdmFyIGZlYXR1cmVfZ3JvdXBfNGVjZWI0ZGYxMWI5NGE5YWFjMTcwOWY5MTZkZjBiNTYgPSBMLmZlYXR1cmVHcm91cCgKICAgICAgICAgICAgICAgIHt9CiAgICAgICAgICAgICkuYWRkVG8obWFwXzM2OGE4NzlkOTM3ZTQ1NjZhMmU1YTY1NjExMmY5ZGIxKTsKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9seV9saW5lX2I5ODdlZDlhZTg1OTRkNmQ4ZDlmNzc0ZDI0MjYzNzU3ID0gTC5wb2x5bGluZSgKICAgICAgICAgICAgICAgIFtbNDMuMjU0NDU0NjIzMjMzMDksIC0yLjkxMDc1MzUzNzIxMjk3NV0sIFs0My4yNTQ5MTE4MjgxMzg4LCAtMi45MDcyMDg0MjI4MDkyNjY1XSwgWzQzLjI1NjEyMDkwOTAwNjExLCAtMi45MDQ0MTMzNTgzNjY5OTM4XSwgWzQzLjI1NTUxMDAyNzQ0Mzk2LCAtMi45MDA2NDA3NTc1NDY2NTZdLCBbNDMuMjU3MzMxNzcwODg5OCwgLTIuODk5MDY0NTc3OTQ5NTQ5Nl0sIFs0My4yNTk2OTU3ODExMzIzNjUsIC0yLjkwMDQ3MTcwOTIxMjI0NDVdLCBbNDMuMjYxMzQ4ODI4Mzc0MTQ2LCAtMi45MDAzNzU3NTExMjk5NF0sIFs0My4yNjA2MDYzMzU0MjQwNywgLTIuOTAxMjQ1MTE0MjQwNjQ5XSwgWzQzLjI2MDM2NzMwNjQyNDEzLCAtMi45MDMzMDQ2NzI4ODM5MTNdLCBbNDMuMjYxNTIyMzg1MTkyNDY0LCAtMi45MDQ4MjU0NTA4MDE1MTU0XSwgWzQzLjI2MDMyOTE0NDY3ODQ2NSwgLTIuOTA0NzQ3MTQyMzEyNzMyXV0sCiAgICAgICAgICAgICAgICB7ImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLCAiY29sb3IiOiAiI2ZjOGQ2MiIsICJkYXNoQXJyYXkiOiBudWxsLCAiZGFzaE9mZnNldCI6IG51bGwsICJmaWxsIjogZmFsc2UsICJmaWxsQ29sb3IiOiAiI2ZjOGQ2MiIsICJmaWxsT3BhY2l0eSI6IDAuMiwgImZpbGxSdWxlIjogImV2ZW5vZGQiLCAibGluZUNhcCI6ICJyb3VuZCIsICJsaW5lSm9pbiI6ICJyb3VuZCIsICJub0NsaXAiOiBmYWxzZSwgIm9wYWNpdHkiOiAxLjAsICJzbW9vdGhGYWN0b3IiOiAxLjAsICJzdHJva2UiOiB0cnVlLCAid2VpZ2h0IjogM30KICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzRlY2ViNGRmMTFiOTRhOWFhYzE3MDlmOTE2ZGYwYjU2KTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBwb3B1cF84NmE3NmUxMjI2OWI0ZDA2YmJhZGRmNjM3NTQ3YWZhZSA9IEwucG9wdXAoeyJtYXhXaWR0aCI6ICIxMDAlIn0pOwoKICAgICAgICAKICAgICAgICAgICAgdmFyIGh0bWxfYjNmNjZmOWYwZjY1NDNjZGFkZmIwZWMwZTQ2ZjY2NzkgPSAkKGA8ZGl2IGlkPSJodG1sX2IzZjY2ZjlmMGY2NTQzY2RhZGZiMGVjMGU0NmY2Njc5IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij48dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCB0YWJsZS1ob3ZlciI+PHRyPjx0aD5kaXJlY3Rpb25faWQ8L3RoPjx0ZD48L3RkPjwvdHI+PHRyPjx0aD5yb3V0ZV9pZDwvdGg+PHRkPjIxNjwvdGQ+PC90cj48dHI+PHRoPnNlcnZpY2VfaWQ8L3RoPjx0ZD4xPC90ZD48L3RyPjx0cj48dGg+c2hhcGVfaWQ8L3RoPjx0ZD5zaGFwZV8wMjk8L3RkPjwvdHI+PHRyPjx0aD50cmlwX2hlYWRzaWduPC90aD48dGQ+IFNhbnR1dHh1PC90ZD48L3RyPjx0cj48dGg+dHJpcF9pZDwvdGg+PHRkPjQxNjQxNjwvdGQ+PC90cj48L3RhYmxlPjwvZGl2PmApWzBdOwogICAgICAgICAgICBwb3B1cF84NmE3NmUxMjI2OWI0ZDA2YmJhZGRmNjM3NTQ3YWZhZS5zZXRDb250ZW50KGh0bWxfYjNmNjZmOWYwZjY1NDNjZGFkZmIwZWMwZTQ2ZjY2NzkpOwogICAgICAgIAoKICAgICAgICBwb2x5X2xpbmVfYjk4N2VkOWFlODU5NGQ2ZDhkOWY3NzRkMjQyNjM3NTcuYmluZFBvcHVwKHBvcHVwXzg2YTc2ZTEyMjY5YjRkMDZiYmFkZGY2Mzc1NDdhZmFlKQogICAgICAgIDsKCiAgICAgICAgCiAgICAKICAgIAogICAgICAgICAgICB2YXIgZmVhdHVyZV9ncm91cF81MzhiMTRmMmM3ODE0NDQxYTg1ZTk1MmM5NjNhYmM5NCA9IEwuZmVhdHVyZUdyb3VwKAogICAgICAgICAgICAgICAge30KICAgICAgICAgICAgKS5hZGRUbyhtYXBfMzY4YTg3OWQ5MzdlNDU2NmEyZTVhNjU2MTEyZjlkYjEpOwogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb2x5X2xpbmVfMDVjMTBhZTE3MzM2NDUzYjkwMTMzMTRkZDU2NDMwZjcgPSBMLnBvbHlsaW5lKAogICAgICAgICAgICAgICAgW1s0My4yNTE2NTg3NDk2NzU3MiwgLTIuOTEwNTg4MjkyMDQ5NTY5Nl0sIFs0My4yNTQ5ODk3ODA3OTExNTYsIC0yLjkxMTkzNDM0NzczMDkwMzZdLCBbNDMuMjU3NTEyNjY0MDI5MDY1LCAtMi45MTM0MDUzMjM4MTQ1NzZdLCBbNDMuMjU3ODM4OTA5NjIzNDIsIC0yLjkxNjc4MjMxNTkzNjA3NzddLCBbNDMuMjYwMzA2MzA3NjY1MiwgLTIuOTE2NjY4NTUyMzUwMzE3XSwgWzQzLjI2MTUzMTAwMjA2NTQxLCAtMi45MTUyNzQyNjc1NDQ0NDY3XSwgWzQzLjI2NTUxMzY0MzEwODQ2LCAtMi45MTY2ODMxMDkwNzgxNjhdLCBbNDMuMjY3ODMwMzcwMzg5NTc1LCAtMi45MTg0MzQ4NTAxODE5OTE0XSwgWzQzLjI2OTgzMTM3MTQ4NDkyNiwgLTIuOTIyNTcyODQ1NTE3NTA3N10sIFs0My4yNzAwODM4OTQ3OTAyMDQsIC0yLjkyNjAwMzU2MjEyMjg3MzNdLCBbNDMuMjY2MDg0OTA3NjE1OTIsIC0yLjkzMzcwNTgzNDYwNzY2NjNdLCBbNDMuMjYzMjg5NzI1MzM5NTUsIC0yLjkzNTk4NzI3NDM0NzM4MzRdLCBbNDMuMjYzNjQ0NjIyMzk5NTQ2LCAtMi45MzkyODYyNDU4MTI0MTA1XSwgWzQzLjI2MTE3MTIxMjU0MzEzLCAtMi45NDAyNzE5NzM5ODg0ODY0XSwgWzQzLjI1ODM1ODk1MTY3NjA0NCwgLTIuOTQxNDExMzc4Nzc1NjMxN10sIFs0My4yNTc3MTg2NDA0NDI0LCAtMi45NDI3MzgwMDIzMjY5OTQ1XSwgWzQzLjI1ODAwMDE5Mjc4OTYsIC0yLjk0OTA1MjUyOTEyOTYyMTVdLCBbNDMuMjYwMTAxMTU2ODc4MTgsIC0yLjk1Mjk3MTQ5Mzc1NTIwOTRdLCBbNDMuMjU4NDY1MTYzNjMwMTQsIC0yLjk1MTkyMjgzNDk4NjgxNjddLCBbNDMuMjU1ODc4Njg5MzQ1MjcsIC0yLjk1Mzg5NjgzODEyNzMwMTZdLCBbNDMuMjU4MDM5NDUwNjAxMzk1LCAtMi45NTQxNTI3MjY5MjA1MjNdLCBbNDMuMjU4NDA3MTA1NDcyMjMsIC0yLjk1NTgzOTU2OTc1Njc3Nl0sIFs0My4yNTcwMjEyNTE2NjkxMSwgLTIuOTU1MTM0OTg3NDkyMzIyXV0sCiAgICAgICAgICAgICAgICB7ImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLCAiY29sb3IiOiAiIzhkYTBjYiIsICJkYXNoQXJyYXkiOiBudWxsLCAiZGFzaE9mZnNldCI6IG51bGwsICJmaWxsIjogZmFsc2UsICJmaWxsQ29sb3IiOiAiIzhkYTBjYiIsICJmaWxsT3BhY2l0eSI6IDAuMiwgImZpbGxSdWxlIjogImV2ZW5vZGQiLCAibGluZUNhcCI6ICJyb3VuZCIsICJsaW5lSm9pbiI6ICJyb3VuZCIsICJub0NsaXAiOiBmYWxzZSwgIm9wYWNpdHkiOiAxLjAsICJzbW9vdGhGYWN0b3IiOiAxLjAsICJzdHJva2UiOiB0cnVlLCAid2VpZ2h0IjogM30KICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzUzOGIxNGYyYzc4MTQ0NDFhODVlOTUyYzk2M2FiYzk0KTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBwb3B1cF84N2I4MzkzNDAyZmY0YWRlYWM1ZGFkMTFiY2Y0MGY0NCA9IEwucG9wdXAoeyJtYXhXaWR0aCI6ICIxMDAlIn0pOwoKICAgICAgICAKICAgICAgICAgICAgdmFyIGh0bWxfNTc2MGFmMGVlNjcyNDc2NWJlODRlMDQ5YWQxMTY4N2EgPSAkKGA8ZGl2IGlkPSJodG1sXzU3NjBhZjBlZTY3MjQ3NjViZTg0ZTA0OWFkMTE2ODdhIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij48dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCB0YWJsZS1ob3ZlciI+PHRyPjx0aD5kaXJlY3Rpb25faWQ8L3RoPjx0ZD48L3RkPjwvdHI+PHRyPjx0aD5yb3V0ZV9pZDwvdGg+PHRkPjIxNzwvdGQ+PC90cj48dHI+PHRoPnNlcnZpY2VfaWQ8L3RoPjx0ZD4xPC90ZD48L3RyPjx0cj48dGg+c2hhcGVfaWQ8L3RoPjx0ZD5zaGFwZV8wMzE8L3RkPjwvdHI+PHRyPjx0aD50cmlwX2hlYWRzaWduPC90aD48dGQ+IExlemVhZ2E8L3RkPjwvdHI+PHRyPjx0aD50cmlwX2lkPC90aD48dGQ+NDE0MDY3PC90ZD48L3RyPjwvdGFibGU+PC9kaXY+YClbMF07CiAgICAgICAgICAgIHBvcHVwXzg3YjgzOTM0MDJmZjRhZGVhYzVkYWQxMWJjZjQwZjQ0LnNldENvbnRlbnQoaHRtbF81NzYwYWYwZWU2NzI0NzY1YmU4NGUwNDlhZDExNjg3YSk7CiAgICAgICAgCgogICAgICAgIHBvbHlfbGluZV8wNWMxMGFlMTczMzY0NTNiOTAxMzMxNGRkNTY0MzBmNy5iaW5kUG9wdXAocG9wdXBfODdiODM5MzQwMmZmNGFkZWFjNWRhZDExYmNmNDBmNDQpCiAgICAgICAgOwoKICAgICAgICAKICAgIAogICAgCiAgICAgICAgICAgIHZhciBmZWF0dXJlX2dyb3VwXzFiMmUwNGI3OWYwNjQzYWU5NGY0NGFkNjU1MDVlNjg4ID0gTC5mZWF0dXJlR3JvdXAoCiAgICAgICAgICAgICAgICB7fQogICAgICAgICAgICApLmFkZFRvKG1hcF8zNjhhODc5ZDkzN2U0NTY2YTJlNWE2NTYxMTJmOWRiMSk7CiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvbHlfbGluZV9lYTY1OTljYTVlN2Y0YzExOTE2NGZjYjFlNjQxMDRkNCA9IEwucG9seWxpbmUoCiAgICAgICAgICAgICAgICBbWzQzLjI1NzAyMTI1MTY2OTExLCAtMi45NTUxMzQ5ODc0OTIzMjJdLCBbNDMuMjU4MzU3ODU4MjYyOTEsIC0yLjk1NTc1NzA2MTA5MjcwNzVdLCBbNDMuMjU3NzcxOTA2MzQ3MDEsIC0yLjk1NDA0MzUxMTUwMzQwMzZdLCBbNDMuMjU1ODMwNjEzNzQ5NDk1LCAtMi45NTM4MzkyODExMzgwNjQzXSwgWzQzLjI1ODYyNjY4NzY5OTEwNiwgLTIuOTUxOTM2ODAyNTMzMzYzN10sIFs0My4yNTk0NjAwNDMzMDAxNSwgLTIuOTUyMjY5MTkzMzg1ODUzNF0sIFs0My4yNTc5NDQ4NTg2MzgwNywgLTIuOTQ5MDU1NDY4Njc2Mjg5M10sIFs0My4yNTc1ODc1Mzc3MDQxMDQsIC0yLjk0MjUyMzg1ODY3ODQzNV0sIFs0My4yNTg2MDM4NTgwMjkwMywgLTIuOTQxMjUyMTYyMTAzMTQ1Nl0sIFs0My4yNjE1OTE0MzkwNDA0MiwgLTIuOTQwMDMyNDUwMTkwNzU2XSwgWzQzLjI2MzYxNTE0NjM1MzI3NCwgLTIuOTM5MTg3MzcxODk2MTk5XSwgWzQzLjI2MzE2OTEyMzc4MDI4LCAtMi45MzYwNTIwMTI1MDU5Mzg2XSwgWzQzLjI2MzYyOTYzMTgzOTAzLCAtMi45MzQ1ODY4OTAxNjEyMzldLCBbNDMuMjY2NjkxMjk5MTA1NjIsIC0yLjkzMzMzOTk3MzkzMDE2ODddLCBbNDMuMjY5NjY4NjEzMzgzNzMsIC0yLjkyMjQ3OTIxNDQ3ODM3NjRdLCBbNDMuMjY3NjQxNDEwMjQ3MDYsIC0yLjkxODQyNjYyNDc1MTk5Ml0sIFs0My4yNjU1MzA4MjE4MTc2NTYsIC0yLjkxNjg3ODA2NzMyMDYyOF0sIFs0My4yNjE0MTgyNjg1MTc4MTUsIC0yLjkxNTg3MDE2Nzk2NDgyXSwgWzQzLjI2MDAzNzU3NDQxNzA3LCAtMi45MTcwMTg1MzY3MTcxMzM1XSwgWzQzLjI1Nzc1OTYyMjAzMjA4LCAtMi45MTY4MzQ2MzkzMTU4MTM4XSwgWzQzLjI1NzI1NTM1NjgxODg5LCAtMi45MTM2MTM5ODAwMzU0Mzg0XSwgWzQzLjI1NTk4Mzc3NjM1ODM4NCwgLTIuOTEzMDk4Mjc2NTQ2Njg5N10sIFs0My4yNTQ2NTY0Mjk4MjM4NSwgLTIuOTE0OTUzNTkyMDkwODczXSwgWzQzLjI1NDYyMTAyOTg1ODc1NCwgLTIuOTE2OTEzMDQ0NzQyNzQxNl0sIFs0My4yNTMxMjA1MTM1NTg5MDUsIC0yLjkxNTYxNzg1NjgxOTEyMzhdLCBbNDMuMjUxNzE5MjYwNjUwNzYsIC0yLjkxNDY0MTk2ODIzMTY3Nl0sIFs0My4yNTE2NTg3NDk2NzU3MiwgLTIuOTEwNTg4MjkyMDQ5NTY5Nl1dLAogICAgICAgICAgICAgICAgeyJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwgImNvbG9yIjogIiNlNzhhYzMiLCAiZGFzaEFycmF5IjogbnVsbCwgImRhc2hPZmZzZXQiOiBudWxsLCAiZmlsbCI6IGZhbHNlLCAiZmlsbENvbG9yIjogIiNlNzhhYzMiLCAiZmlsbE9wYWNpdHkiOiAwLjIsICJmaWxsUnVsZSI6ICJldmVub2RkIiwgImxpbmVDYXAiOiAicm91bmQiLCAibGluZUpvaW4iOiAicm91bmQiLCAibm9DbGlwIjogZmFsc2UsICJvcGFjaXR5IjogMS4wLCAic21vb3RoRmFjdG9yIjogMS4wLCAic3Ryb2tlIjogdHJ1ZSwgIndlaWdodCI6IDN9CiAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8xYjJlMDRiNzlmMDY0M2FlOTRmNDRhZDY1NTA1ZTY4OCk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgcG9wdXBfMjQ0ZDEzMDBiNDNmNDI4YWFlNTYxYTg2MDYzMzI0YzggPSBMLnBvcHVwKHsibWF4V2lkdGgiOiAiMTAwJSJ9KTsKCiAgICAgICAgCiAgICAgICAgICAgIHZhciBodG1sX2M1NzljM2RiMjJmNjRlYWM4NzRjZWY1OWU3YmI4Y2MwID0gJChgPGRpdiBpZD0iaHRtbF9jNTc5YzNkYjIyZjY0ZWFjODc0Y2VmNTllN2JiOGNjMCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+PHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQgdGFibGUtaG92ZXIiPjx0cj48dGg+ZGlyZWN0aW9uX2lkPC90aD48dGQ+PC90ZD48L3RyPjx0cj48dGg+cm91dGVfaWQ8L3RoPjx0ZD4yMTg8L3RkPjwvdHI+PHRyPjx0aD5zZXJ2aWNlX2lkPC90aD48dGQ+MTwvdGQ+PC90cj48dHI+PHRoPnNoYXBlX2lkPC90aD48dGQ+c2hhcGVfMTE4PC90ZD48L3RyPjx0cj48dGg+dHJpcF9oZWFkc2lnbjwvdGg+PHRkPiBMZXplYWdhPC90ZD48L3RyPjx0cj48dGg+dHJpcF9pZDwvdGg+PHRkPjQxNDE3ODwvdGQ+PC90cj48L3RhYmxlPjwvZGl2PmApWzBdOwogICAgICAgICAgICBwb3B1cF8yNDRkMTMwMGI0M2Y0MjhhYWU1NjFhODYwNjMzMjRjOC5zZXRDb250ZW50KGh0bWxfYzU3OWMzZGIyMmY2NGVhYzg3NGNlZjU5ZTdiYjhjYzApOwogICAgICAgIAoKICAgICAgICBwb2x5X2xpbmVfZWE2NTk5Y2E1ZTdmNGMxMTkxNjRmY2IxZTY0MTA0ZDQuYmluZFBvcHVwKHBvcHVwXzI0NGQxMzAwYjQzZjQyOGFhZTU2MWE4NjA2MzMyNGM4KQogICAgICAgIDsKCiAgICAgICAgCiAgICAKICAgIAogICAgICAgICAgICB2YXIgZmVhdHVyZV9ncm91cF84YzdlM2IzZDkwNTY0OGY5YmQwYzc0YzZjMDQ2YzgwOCA9IEwuZmVhdHVyZUdyb3VwKAogICAgICAgICAgICAgICAge30KICAgICAgICAgICAgKS5hZGRUbyhtYXBfMzY4YTg3OWQ5MzdlNDU2NmEyZTVhNjU2MTEyZjlkYjEpOwogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb2x5X2xpbmVfOGY4MmRiYzc0MzMyNDFhZmE4Mjk0MzU3MmIzNTY3MDkgPSBMLnBvbHlsaW5lKAogICAgICAgICAgICAgICAgW1s0My4yMjcxMzQ4NzEzMjM0NSwgLTIuOTE2ODMzODY1MTY4MjQxXSwgWzQzLjIyNjM3MDk4ODI1NDUxLCAtMi45MTM5NTI0ODI4MDUyMDQ0XSwgWzQzLjIzMjc4MzM2MTYwNzI4LCAtMi45MTQ0NjY5NzI2MDA4OTQ1XSwgWzQzLjIzOTQzOTU4NzY0MzU3LCAtMi45MTgxMzMwNjM4NjY5MjY1XSwgWzQzLjI0MTQ3Nzg2MDgwNjgxLCAtMi45MjEyNzA0NTI1MjA4MzQ0XSwgWzQzLjI0MTk2NDE4MDcwNTUxNiwgLTIuOTIzNjM0NDQ4NTM3OTcxNV0sIFs0My4yNDI0NDk3MTYxOTU2MiwgLTIuOTI1NTk1NzY1MjAyMDczN10sIFs0My4yNDEyMzQ1NTE5MTIzMiwgLTIuOTIzNTE3ODQ3MzI2NTE3OF0sIFs0My4yNDA5NzczNTE1MjkyOTUsIC0yLjkyMTQ2NDMwMTQ5ODg3NDZdXSwKICAgICAgICAgICAgICAgIHsiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsICJjb2xvciI6ICIjYTZkODU0IiwgImRhc2hBcnJheSI6IG51bGwsICJkYXNoT2Zmc2V0IjogbnVsbCwgImZpbGwiOiBmYWxzZSwgImZpbGxDb2xvciI6ICIjYTZkODU0IiwgImZpbGxPcGFjaXR5IjogMC4yLCAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsICJsaW5lQ2FwIjogInJvdW5kIiwgImxpbmVKb2luIjogInJvdW5kIiwgIm5vQ2xpcCI6IGZhbHNlLCAib3BhY2l0eSI6IDEuMCwgInNtb290aEZhY3RvciI6IDEuMCwgInN0cm9rZSI6IHRydWUsICJ3ZWlnaHQiOiAzfQogICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfOGM3ZTNiM2Q5MDU2NDhmOWJkMGM3NGM2YzA0NmM4MDgpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIHBvcHVwXzc4OTAxNjMwNjdjNTRjNzQ4ZjAwNDVlNGI4ZjI4MzZhID0gTC5wb3B1cCh7Im1heFdpZHRoIjogIjEwMCUifSk7CgogICAgICAgIAogICAgICAgICAgICB2YXIgaHRtbF82NTlmNjMxZTkwZmY0YmYwYWZjN2Q5Yzk0NzUzNjVjYiA9ICQoYDxkaXYgaWQ9Imh0bWxfNjU5ZjYzMWU5MGZmNGJmMGFmYzdkOWM5NDc1MzY1Y2IiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPjx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIHRhYmxlLWhvdmVyIj48dHI+PHRoPmRpcmVjdGlvbl9pZDwvdGg+PHRkPjwvdGQ+PC90cj48dHI+PHRoPnJvdXRlX2lkPC90aD48dGQ+MjE5PC90ZD48L3RyPjx0cj48dGg+c2VydmljZV9pZDwvdGg+PHRkPjE8L3RkPjwvdHI+PHRyPjx0aD5zaGFwZV9pZDwvdGg+PHRkPnNoYXBlXzAzOTwvdGQ+PC90cj48dHI+PHRoPnRyaXBfaGVhZHNpZ248L3RoPjx0ZD4gTGEgUGXDsWE8L3RkPjwvdHI+PHRyPjx0aD50cmlwX2lkPC90aD48dGQ+NDA3ODQyPC90ZD48L3RyPjwvdGFibGU+PC9kaXY+YClbMF07CiAgICAgICAgICAgIHBvcHVwXzc4OTAxNjMwNjdjNTRjNzQ4ZjAwNDVlNGI4ZjI4MzZhLnNldENvbnRlbnQoaHRtbF82NTlmNjMxZTkwZmY0YmYwYWZjN2Q5Yzk0NzUzNjVjYik7CiAgICAgICAgCgogICAgICAgIHBvbHlfbGluZV84ZjgyZGJjNzQzMzI0MWFmYTgyOTQzNTcyYjM1NjcwOS5iaW5kUG9wdXAocG9wdXBfNzg5MDE2MzA2N2M1NGM3NDhmMDA0NWU0YjhmMjgzNmEpCiAgICAgICAgOwoKICAgICAgICAKICAgIAogICAgCiAgICAgICAgICAgIHZhciBmZWF0dXJlX2dyb3VwXzI0YTQwYjcwMWYzMzRhOWY5Y2IxNjk3M2U4N2ExNjllID0gTC5mZWF0dXJlR3JvdXAoCiAgICAgICAgICAgICAgICB7fQogICAgICAgICAgICApLmFkZFRvKG1hcF8zNjhhODc5ZDkzN2U0NTY2YTJlNWE2NTYxMTJmOWRiMSk7CiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvbHlfbGluZV9mMDVjNTA5NWJjYWU0YzFkYTJmZTJhYWIwMTJkYWFmNCA9IEwucG9seWxpbmUoCiAgICAgICAgICAgICAgICBbWzQzLjI0MDk3NzM1MTUyOTI5NSwgLTIuOTIxNDY0MzAxNDk4ODc0Nl0sIFs0My4yMzk0Mzk1ODc2NDM1NywgLTIuOTE4MTMzMDYzODY2OTI2NV0sIFs0My4yMzI2NDkyNDA5MTQ2NzUsIC0yLjkxNDUzMzgxMzU2MjY0MTddLCBbNDMuMjI2NDE3NjEzNTIyMjE2LCAtMi45MTM5MTEzNjcyNzAyNzY2XSwgWzQzLjIyNzEzNDg3MTMyMzQ1LCAtMi45MTY4MzM4NjUxNjgyNDFdXSwKICAgICAgICAgICAgICAgIHsiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsICJjb2xvciI6ICIjZmZkOTJmIiwgImRhc2hBcnJheSI6IG51bGwsICJkYXNoT2Zmc2V0IjogbnVsbCwgImZpbGwiOiBmYWxzZSwgImZpbGxDb2xvciI6ICIjZmZkOTJmIiwgImZpbGxPcGFjaXR5IjogMC4yLCAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsICJsaW5lQ2FwIjogInJvdW5kIiwgImxpbmVKb2luIjogInJvdW5kIiwgIm5vQ2xpcCI6IGZhbHNlLCAib3BhY2l0eSI6IDEuMCwgInNtb290aEZhY3RvciI6IDEuMCwgInN0cm9rZSI6IHRydWUsICJ3ZWlnaHQiOiAzfQogICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMjRhNDBiNzAxZjMzNGE5ZjljYjE2OTczZTg3YTE2OWUpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIHBvcHVwXzRjYjI4NTNhODk2MDQ4YTc4NTEwYzkyOWQzY2Q1ODIyID0gTC5wb3B1cCh7Im1heFdpZHRoIjogIjEwMCUifSk7CgogICAgICAgIAogICAgICAgICAgICB2YXIgaHRtbF81YmFhODJhYjM4ZTM0N2EzODgzMjY1ZTEwNDk3MjFiNyA9ICQoYDxkaXYgaWQ9Imh0bWxfNWJhYTgyYWIzOGUzNDdhMzg4MzI2NWUxMDQ5NzIxYjciIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPjx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIHRhYmxlLWhvdmVyIj48dHI+PHRoPmRpcmVjdGlvbl9pZDwvdGg+PHRkPjwvdGQ+PC90cj48dHI+PHRoPnJvdXRlX2lkPC90aD48dGQ+MjIwPC90ZD48L3RyPjx0cj48dGg+c2VydmljZV9pZDwvdGg+PHRkPjE8L3RkPjwvdHI+PHRyPjx0aD5zaGFwZV9pZDwvdGg+PHRkPnNoYXBlXzA0MzwvdGQ+PC90cj48dHI+PHRoPnRyaXBfaGVhZHNpZ248L3RoPjx0ZD4gTGEgUGXDsWE8L3RkPjwvdHI+PHRyPjx0aD50cmlwX2lkPC90aD48dGQ+NDA3OTYzPC90ZD48L3RyPjwvdGFibGU+PC9kaXY+YClbMF07CiAgICAgICAgICAgIHBvcHVwXzRjYjI4NTNhODk2MDQ4YTc4NTEwYzkyOWQzY2Q1ODIyLnNldENvbnRlbnQoaHRtbF81YmFhODJhYjM4ZTM0N2EzODgzMjY1ZTEwNDk3MjFiNyk7CiAgICAgICAgCgogICAgICAgIHBvbHlfbGluZV9mMDVjNTA5NWJjYWU0YzFkYTJmZTJhYWIwMTJkYWFmNC5iaW5kUG9wdXAocG9wdXBfNGNiMjg1M2E4OTYwNDhhNzg1MTBjOTI5ZDNjZDU4MjIpCiAgICAgICAgOwoKICAgICAgICAKICAgIAogICAgCiAgICAgICAgICAgIHZhciBmZWF0dXJlX2dyb3VwXzkyYTBkM2Q5NGYxZTRiNmU5N2IzYTYwZmNmZWZiOTk0ID0gTC5mZWF0dXJlR3JvdXAoCiAgICAgICAgICAgICAgICB7fQogICAgICAgICAgICApLmFkZFRvKG1hcF8zNjhhODc5ZDkzN2U0NTY2YTJlNWE2NTYxMTJmOWRiMSk7CiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvbHlfbGluZV84N2JjMjljYTA3MzQ0MzRiYjc5NTFlM2IxNTEzMmIyOSA9IEwucG9seWxpbmUoCiAgICAgICAgICAgICAgICBbWzQzLjI2NDkyNjE2NTM0MTMzNiwgLTIuOTQ0MDU5OTcwOTQyMjkwOF0sIFs0My4yNjQxNDc0NjkxODg3ODUsIC0yLjk0MDUxOTU0MDQ4MTQ2N10sIFs0My4yNjMzNDgwMTE1NDI3NCwgLTIuOTM2ODY5MjcxMDMwMjYzN10sIFs0My4yNjI2OTA3NjE5NzcwMywgLTIuOTMzNzUwOTk2NDMxNTU5XSwgWzQzLjI2MTUyOTk0NjQwMDE3NCwgLTIuOTI4NDc2NTgwODg0NjUxM10sIFs0My4yNTk1NjI0NjM3MTkxNSwgLTIuOTI0MDM3ODgxMTk4MDEwM10sIFs0My4yNTcwOTAzNDI1MzMwNzUsIC0yLjkyNzEyOTI5NTA3NzkyMzddLCBbNDMuMjU0NzczMDc3NzUxNTIsIC0yLjkyNjc0Mzg5NDM0MzA3NDRdLCBbNDMuMjU0MDg4NDc5NDI0MTA1LCAtMi45MjUwODAzNjg4NDA4NzA2XSwgWzQzLjI1MzcyODkzMTM2NTM0NSwgLTIuOTIzMDc5MTU5OTg4NjU2NV0sIFs0My4yNTIzNDM0MDMwNTMzMywgLTIuOTIzMDc5Mzg4NTUwNzk0XSwgWzQzLjI1MTAzNDU1MTYxOTQ3LCAtMi45MjI4ODk4MDAzNzI0NTE1XSwgWzQzLjI0OTUzMjkzODk2ODM4LCAtMi45MjE4NDQyMzIwNjM2Nzg2XSwgWzQzLjI0NTcxOTk5NjczMzg1NCwgLTIuOTIyNTI5NDM3NjMyNjA2NV0sIFs0My4yNDQ4NDE3NjU2NDQxNywgLTIuOTI0OTQxOTY3MzEyMzAyN10sIFs0My4yNDI0NDk3MTYxOTU2MiwgLTIuOTI1NTk1NzY1MjAyMDczN10sIFs0My4yNDEyMzQ1NTE5MTIzMiwgLTIuOTIzNTE3ODQ3MzI2NTE3OF0sIFs0My4yNDA5NzczNTE1MjkyOTUsIC0yLjkyMTQ2NDMwMTQ5ODg3NDZdXSwKICAgICAgICAgICAgICAgIHsiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsICJjb2xvciI6ICIjZTVjNDk0IiwgImRhc2hBcnJheSI6IG51bGwsICJkYXNoT2Zmc2V0IjogbnVsbCwgImZpbGwiOiBmYWxzZSwgImZpbGxDb2xvciI6ICIjZTVjNDk0IiwgImZpbGxPcGFjaXR5IjogMC4yLCAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsICJsaW5lQ2FwIjogInJvdW5kIiwgImxpbmVKb2luIjogInJvdW5kIiwgIm5vQ2xpcCI6IGZhbHNlLCAib3BhY2l0eSI6IDEuMCwgInNtb290aEZhY3RvciI6IDEuMCwgInN0cm9rZSI6IHRydWUsICJ3ZWlnaHQiOiAzfQogICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfOTJhMGQzZDk0ZjFlNGI2ZTk3YjNhNjBmY2ZlZmI5OTQpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIHBvcHVwX2UyMGEzOTU5OTU1YzRjNjk4ZjgxYTU1NTI0MDJhNDYxID0gTC5wb3B1cCh7Im1heFdpZHRoIjogIjEwMCUifSk7CgogICAgICAgIAogICAgICAgICAgICB2YXIgaHRtbF80YjYzYmM0ZTEwMDU0Y2I4OTI5YmIzYzg2OGRlOTUyYyA9ICQoYDxkaXYgaWQ9Imh0bWxfNGI2M2JjNGUxMDA1NGNiODkyOWJiM2M4NjhkZTk1MmMiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPjx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIHRhYmxlLWhvdmVyIj48dHI+PHRoPmRpcmVjdGlvbl9pZDwvdGg+PHRkPjwvdGQ+PC90cj48dHI+PHRoPnJvdXRlX2lkPC90aD48dGQ+MjIxPC90ZD48L3RyPjx0cj48dGg+c2VydmljZV9pZDwvdGg+PHRkPjE8L3RkPjwvdHI+PHRyPjx0aD5zaGFwZV9pZDwvdGg+PHRkPnNoYXBlXzEwMzwvdGQ+PC90cj48dHI+PHRoPnRyaXBfaGVhZHNpZ248L3RoPjx0ZD4gSmVzdXNlbiBCaWhvdHphPC90ZD48L3RyPjx0cj48dGg+dHJpcF9pZDwvdGg+PHRkPjQxMDY0MzwvdGQ+PC90cj48L3RhYmxlPjwvZGl2PmApWzBdOwogICAgICAgICAgICBwb3B1cF9lMjBhMzk1OTk1NWM0YzY5OGY4MWE1NTUyNDAyYTQ2MS5zZXRDb250ZW50KGh0bWxfNGI2M2JjNGUxMDA1NGNiODkyOWJiM2M4NjhkZTk1MmMpOwogICAgICAgIAoKICAgICAgICBwb2x5X2xpbmVfODdiYzI5Y2EwNzM0NDM0YmI3OTUxZTNiMTUxMzJiMjkuYmluZFBvcHVwKHBvcHVwX2UyMGEzOTU5OTU1YzRjNjk4ZjgxYTU1NTI0MDJhNDYxKQogICAgICAgIDsKCiAgICAgICAgCiAgICAKICAgIAogICAgICAgICAgICB2YXIgZmVhdHVyZV9ncm91cF80ZjBlNGFmZDBmYjQ0ZGY4YjkxZTEyOTliMWFhOTQyYSA9IEwuZmVhdHVyZUdyb3VwKAogICAgICAgICAgICAgICAge30KICAgICAgICAgICAgKS5hZGRUbyhtYXBfMzY4YTg3OWQ5MzdlNDU2NmEyZTVhNjU2MTEyZjlkYjEpOwogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb2x5X2xpbmVfZWVjYzUzZmJhYWQ5NDU5NGFiYTQ3MzEwNjkyYTMwN2YgPSBMLnBvbHlsaW5lKAogICAgICAgICAgICAgICAgW1s0My4yNDA5NzczNTE1MjkyOTUsIC0yLjkyMTQ2NDMwMTQ5ODg3NDZdLCBbNDMuMjQxNDc3ODYwODA2ODEsIC0yLjkyMTI3MDQ1MjUyMDgzNDRdLCBbNDMuMjQxOTY0MTgwNzA1NTE2LCAtMi45MjM2MzQ0NDg1Mzc5NzE1XSwgWzQzLjI0MzEyODU1MjU4OTk1LCAtMi45MjQ5MDc2NTYwNzM0MzhdLCBbNDMuMjQ0ODcxODkyMDExODcsIC0yLjkyNDI4MzA3NTAxMjY3NV0sIFs0My4yNDYxMDA1MTM4OTA3NSwgLTIuOTIxNzEzNzM3Nzg2ODA0XSwgWzQzLjI0OTAyMjM3MjYxNzU5NiwgLTIuOTIxNDQyMjM1MTY0NjU2NV0sIFs0My4yNTIwMDUyODE0NDM3OCwgLTIuOTIyNzk0OTU0MTY0MzU3NF0sIFs0My4yNTQwMjYwODY0NTY0NiwgLTIuOTIzMTczNDMyODk2NDA2NV0sIFs0My4yNTY1OTYzMTQ4MTMzODYsIC0yLjkyNTcwNzkwNDcwOTQ1NDVdLCBbNDMuMjU5Nzk1ODMzMTIzMjksIC0yLjkyNDA4NzI3OTMxMzk0OV0sIFs0My4yNjE3MzI1ODgyNjEyOCwgLTIuOTI4OTY3MDQxMzg1NjQ4M10sIFs0My4yNjI3MDk4NjczOTA5NywgLTIuOTMzNDU3MjM4NzAyMTU3NF0sIFs0My4yNjMyODk3MjUzMzk1NSwgLTIuOTM1OTg3Mjc0MzQ3MzgzNF0sIFs0My4yNjQyMTM1ODUxMzQ5MywgLTIuOTQwMTk4OTQ2ODMyNDY0NV0sIFs0My4yNjQ5MjYxNjUzNDEzMzYsIC0yLjk0NDA1OTk3MDk0MjI5MDhdXSwKICAgICAgICAgICAgICAgIHsiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsICJjb2xvciI6ICIjYjNiM2IzIiwgImRhc2hBcnJheSI6IG51bGwsICJkYXNoT2Zmc2V0IjogbnVsbCwgImZpbGwiOiBmYWxzZSwgImZpbGxDb2xvciI6ICIjYjNiM2IzIiwgImZpbGxPcGFjaXR5IjogMC4yLCAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsICJsaW5lQ2FwIjogInJvdW5kIiwgImxpbmVKb2luIjogInJvdW5kIiwgIm5vQ2xpcCI6IGZhbHNlLCAib3BhY2l0eSI6IDEuMCwgInNtb290aEZhY3RvciI6IDEuMCwgInN0cm9rZSI6IHRydWUsICJ3ZWlnaHQiOiAzfQogICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfNGYwZTRhZmQwZmI0NGRmOGI5MWUxMjk5YjFhYTk0MmEpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIHBvcHVwXzgxZjZhNTc4ZTJkYjQyNDFhMzc4MWYxMTMwNTc3YWFiID0gTC5wb3B1cCh7Im1heFdpZHRoIjogIjEwMCUifSk7CgogICAgICAgIAogICAgICAgICAgICB2YXIgaHRtbF82ZTJiMjY5ZGFiNDA0ZmUwODMwZTY2M2VmZGUzN2E4YyA9ICQoYDxkaXYgaWQ9Imh0bWxfNmUyYjI2OWRhYjQwNGZlMDgzMGU2NjNlZmRlMzdhOGMiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPjx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIHRhYmxlLWhvdmVyIj48dHI+PHRoPmRpcmVjdGlvbl9pZDwvdGg+PHRkPjwvdGQ+PC90cj48dHI+PHRoPnJvdXRlX2lkPC90aD48dGQ+MjIyPC90ZD48L3RyPjx0cj48dGg+c2VydmljZV9pZDwvdGg+PHRkPjE8L3RkPjwvdHI+PHRyPjx0aD5zaGFwZV9pZDwvdGg+PHRkPnNoYXBlXzA0MTwvdGQ+PC90cj48dHI+PHRoPnRyaXBfaGVhZHNpZ248L3RoPjx0ZD4gSmVzdXNlbiBCaWhvdHphPC90ZD48L3RyPjx0cj48dGg+dHJpcF9pZDwvdGg+PHRkPjQxMDg2OTwvdGQ+PC90cj48L3RhYmxlPjwvZGl2PmApWzBdOwogICAgICAgICAgICBwb3B1cF84MWY2YTU3OGUyZGI0MjQxYTM3ODFmMTEzMDU3N2FhYi5zZXRDb250ZW50KGh0bWxfNmUyYjI2OWRhYjQwNGZlMDgzMGU2NjNlZmRlMzdhOGMpOwogICAgICAgIAoKICAgICAgICBwb2x5X2xpbmVfZWVjYzUzZmJhYWQ5NDU5NGFiYTQ3MzEwNjkyYTMwN2YuYmluZFBvcHVwKHBvcHVwXzgxZjZhNTc4ZTJkYjQyNDFhMzc4MWYxMTMwNTc3YWFiKQogICAgICAgIDsKCiAgICAgICAgCiAgICAKICAgIAogICAgICAgICAgICB2YXIgZmVhdHVyZV9ncm91cF8yNjg2ZjlkMzAwMTg0MjZhODRhYmZjMjcyNzkzMTIyNCA9IEwuZmVhdHVyZUdyb3VwKAogICAgICAgICAgICAgICAge30KICAgICAgICAgICAgKS5hZGRUbyhtYXBfMzY4YTg3OWQ5MzdlNDU2NmEyZTVhNjU2MTEyZjlkYjEpOwogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb2x5X2xpbmVfMDMxOTgzMDA3NTkyNDRjOTkwMDVmMDNkZWFjZjljYTcgPSBMLnBvbHlsaW5lKAogICAgICAgICAgICAgICAgW1s0My4yNjAxMDExNTY4NzgxOCwgLTIuOTUyOTcxNDkzNzU1MjA5NF0sIFs0My4yNTc5NDQ4NTg2MzgwNywgLTIuOTQ5MDU1NDY4Njc2Mjg5M10sIFs0My4yNTc0NzUwOTIyNzMzNSwgLTIuOTQ2MDc0MjY0Njc0MjEzXSwgWzQzLjI1NDM2NDAxMjk1OTA1LCAtMi45NDQ3MTg1MDE1ODgxMTE0XSwgWzQzLjI1MjUyNzcxMjAzODIxLCAtMi45NDUwNzQyMDE2MjcwMDddLCBbNDMuMjU0MzMwODMwMzM3NCwgLTIuOTQ0NTk0Mzk5OTQxNzU4M10sIFs0My4yNTQwMzI3Nzk3NzczMDUsIC0yLjk0MjU3ODc4MzY1NzE3MTddLCBbNDMuMjUyMDE5NDU4MDg3Mzk2LCAtMi45Mzg3MjU5MDk5MDY1NTJdLCBbNDMuMjUwODE0NDg1NDM1OTYsIC0yLjkzNTc0NjM2NTE1MTA4OF0sIFs0My4yNDk2Mzk4OTk4MjIwNywgLTIuOTMzNzYxODU0NzQ5MTc5XSwgWzQzLjI0ODMwNDM3NTc3NDYxNiwgLTIuOTMzMjA1Nzc1MDM0NDUzNl0sIFs0My4yNDc2NjAyNDU2NTU4NDQsIC0yLjkzMTYxOTEzMzExNTE1N10sIFs0My4yNDY4OTA4ODgzNzI3NzUsIC0yLjkyOTc1NDUxMzkxNzgzODVdLCBbNDMuMjQ4NzUyNTM2NTc5NDcsIC0yLjkyODA1ODQzMTUwOTkxOF0sIFs0My4yNDk0MTc2MTAyNzA4OCwgLTIuOTI2ODk4ODk3MDU1MzEwNV0sIFs0My4yNTEyMTY4MzUyMzc3MDYsIC0yLjkyOTI2MzUzNzkwMDUxNTRdLCBbNDMuMjUyMzQ4MzYwNDI2NjQsIC0yLjkzMDc1OTE4OTMzNzA1MzNdLCBbNDMuMjUyNzg2MjQwNjg5NTQ1LCAtMi45MzI1NTcwMDQ5NjE4OTY4XV0sCiAgICAgICAgICAgICAgICB7ImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLCAiY29sb3IiOiAiIzY2YzJhNSIsICJkYXNoQXJyYXkiOiBudWxsLCAiZGFzaE9mZnNldCI6IG51bGwsICJmaWxsIjogZmFsc2UsICJmaWxsQ29sb3IiOiAiIzY2YzJhNSIsICJmaWxsT3BhY2l0eSI6IDAuMiwgImZpbGxSdWxlIjogImV2ZW5vZGQiLCAibGluZUNhcCI6ICJyb3VuZCIsICJsaW5lSm9pbiI6ICJyb3VuZCIsICJub0NsaXAiOiBmYWxzZSwgIm9wYWNpdHkiOiAxLjAsICJzbW9vdGhGYWN0b3IiOiAxLjAsICJzdHJva2UiOiB0cnVlLCAid2VpZ2h0IjogM30KICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzI2ODZmOWQzMDAxODQyNmE4NGFiZmMyNzI3OTMxMjI0KTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBwb3B1cF8yZmZlNzcxMTY0ODQ0MjFlYTVkYjBhYWZjMzcxYzc1OCA9IEwucG9wdXAoeyJtYXhXaWR0aCI6ICIxMDAlIn0pOwoKICAgICAgICAKICAgICAgICAgICAgdmFyIGh0bWxfYWM5ZDgzM2RlYzliNDkzMWFmMTJmNTE3ODU2Mjk1YTIgPSAkKGA8ZGl2IGlkPSJodG1sX2FjOWQ4MzNkZWM5YjQ5MzFhZjEyZjUxNzg1NjI5NWEyIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij48dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCB0YWJsZS1ob3ZlciI+PHRyPjx0aD5kaXJlY3Rpb25faWQ8L3RoPjx0ZD48L3RkPjwvdHI+PHRyPjx0aD5yb3V0ZV9pZDwvdGg+PHRkPjIyMzwvdGQ+PC90cj48dHI+PHRoPnNlcnZpY2VfaWQ8L3RoPjx0ZD4xPC90ZD48L3RyPjx0cj48dGg+c2hhcGVfaWQ8L3RoPjx0ZD5zaGFwZV8xMTU8L3RkPjwvdHI+PHRyPjx0aD50cmlwX2hlYWRzaWduPC90aD48dGQ+IE9zcGl0YWxlYTwvdGQ+PC90cj48dHI+PHRoPnRyaXBfaWQ8L3RoPjx0ZD40MDc0Njk8L3RkPjwvdHI+PC90YWJsZT48L2Rpdj5gKVswXTsKICAgICAgICAgICAgcG9wdXBfMmZmZTc3MTE2NDg0NDIxZWE1ZGIwYWFmYzM3MWM3NTguc2V0Q29udGVudChodG1sX2FjOWQ4MzNkZWM5YjQ5MzFhZjEyZjUxNzg1NjI5NWEyKTsKICAgICAgICAKCiAgICAgICAgcG9seV9saW5lXzAzMTk4MzAwNzU5MjQ0Yzk5MDA1ZjAzZGVhY2Y5Y2E3LmJpbmRQb3B1cChwb3B1cF8yZmZlNzcxMTY0ODQ0MjFlYTVkYjBhYWZjMzcxYzc1OCkKICAgICAgICA7CgogICAgICAgIAogICAgCiAgICAKICAgICAgICAgICAgdmFyIGZlYXR1cmVfZ3JvdXBfYWRhZjYyN2VhNmFmNGJmOWJiMjhjMzU0NWQ1NGE4OTYgPSBMLmZlYXR1cmVHcm91cCgKICAgICAgICAgICAgICAgIHt9CiAgICAgICAgICAgICkuYWRkVG8obWFwXzM2OGE4NzlkOTM3ZTQ1NjZhMmU1YTY1NjExMmY5ZGIxKTsKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9seV9saW5lX2RiZjljZjczZWI5NzQ0YmI4YmIxMWZjNmVlOWRjMTY1ID0gTC5wb2x5bGluZSgKICAgICAgICAgICAgICAgIFtbNDMuMjUyNzg2MjQwNjg5NTQ1LCAtMi45MzI1NTcwMDQ5NjE4OTY4XSwgWzQzLjI1MDUzMTEzMzU2ODU2NSwgLTIuOTI5OTA1MDQ0Nzk5ODQ5NF0sIFs0My4yNDkzNTQ4NTU0ODQxMzUsIC0yLjkyNzkwNzUzNDA0MTAzNjVdLCBbNDMuMjQ4NTQ2MTQzMTQ5NiwgLTIuOTI5OTU0MDg5Mzk3MTgxNl0sIFs0My4yNDkzNjgwODk2NzM3MTYsIC0yLjkzMTU1MzM4NjEwNjk4NTZdLCBbNDMuMjUwNjMxMDc2MjU2NTA0LCAtMi45MzM2NzY1NjYzNjEyNzJdLCBbNDMuMjUxNDc1OTc2MDIxODIsIC0yLjkzNTczNzAwODU3MDEwODddLCBbNDMuMjUzMjczMjQ1NDcwMjQsIC0yLjkzNzU1NzQzNTg4NzAxNjJdLCBbNDMuMjUyMDE2MTI4NDU1ODYsIC0yLjkzNzYxNjQ2MDI4NjU5NF0sIFs0My4yNTI4MDI3MzgwODY1NSwgLTIuOTQzMTc4MjExNTU1OTQyNl0sIFs0My4yNTQzNjQwMTI5NTkwNSwgLTIuOTQ0NzE4NTAxNTg4MTExNF0sIFs0My4yNTI4ODk1MzU3NDM5NTQsIC0yLjk0NjQ3OTgwNDIwMzU0NjVdLCBbNDMuMjU2MjI3OTQzOTQzNTY0LCAtMi45NDY0NTM4NzgwODA1NjhdLCBbNDMuMjU4MDAwMTkyNzg5NiwgLTIuOTQ5MDUyNTI5MTI5NjIxNV0sIFs0My4yNjAxMDExNTY4NzgxOCwgLTIuOTUyOTcxNDkzNzU1MjA5NF1dLAogICAgICAgICAgICAgICAgeyJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwgImNvbG9yIjogIiNmYzhkNjIiLCAiZGFzaEFycmF5IjogbnVsbCwgImRhc2hPZmZzZXQiOiBudWxsLCAiZmlsbCI6IGZhbHNlLCAiZmlsbENvbG9yIjogIiNmYzhkNjIiLCAiZmlsbE9wYWNpdHkiOiAwLjIsICJmaWxsUnVsZSI6ICJldmVub2RkIiwgImxpbmVDYXAiOiAicm91bmQiLCAibGluZUpvaW4iOiAicm91bmQiLCAibm9DbGlwIjogZmFsc2UsICJvcGFjaXR5IjogMS4wLCAic21vb3RoRmFjdG9yIjogMS4wLCAic3Ryb2tlIjogdHJ1ZSwgIndlaWdodCI6IDN9CiAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9hZGFmNjI3ZWE2YWY0YmY5YmIyOGMzNTQ1ZDU0YTg5Nik7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgcG9wdXBfYzQyNTUyZTllM2MzNDA0MTlhNTZjNjg2MTIxNDU4YjUgPSBMLnBvcHVwKHsibWF4V2lkdGgiOiAiMTAwJSJ9KTsKCiAgICAgICAgCiAgICAgICAgICAgIHZhciBodG1sX2NmMzlmYzk3OTkxYTRjNjA5OTI3ZjI1MzNkNDU0ZWE2ID0gJChgPGRpdiBpZD0iaHRtbF9jZjM5ZmM5Nzk5MWE0YzYwOTkyN2YyNTMzZDQ1NGVhNiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+PHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQgdGFibGUtaG92ZXIiPjx0cj48dGg+ZGlyZWN0aW9uX2lkPC90aD48dGQ+PC90ZD48L3RyPjx0cj48dGg+cm91dGVfaWQ8L3RoPjx0ZD4yMjQ8L3RkPjwvdHI+PHRyPjx0aD5zZXJ2aWNlX2lkPC90aD48dGQ+MTwvdGQ+PC90cj48dHI+PHRoPnNoYXBlX2lkPC90aD48dGQ+c2hhcGVfMDQ1PC90ZD48L3RyPjx0cj48dGg+dHJpcF9oZWFkc2lnbjwvdGg+PHRkPiBPc3BpdGFsZWE8L3RkPjwvdHI+PHRyPjx0aD50cmlwX2lkPC90aD48dGQ+NDA3NTI5PC90ZD48L3RyPjwvdGFibGU+PC9kaXY+YClbMF07CiAgICAgICAgICAgIHBvcHVwX2M0MjU1MmU5ZTNjMzQwNDE5YTU2YzY4NjEyMTQ1OGI1LnNldENvbnRlbnQoaHRtbF9jZjM5ZmM5Nzk5MWE0YzYwOTkyN2YyNTMzZDQ1NGVhNik7CiAgICAgICAgCgogICAgICAgIHBvbHlfbGluZV9kYmY5Y2Y3M2ViOTc0NGJiOGJiMTFmYzZlZTlkYzE2NS5iaW5kUG9wdXAocG9wdXBfYzQyNTUyZTllM2MzNDA0MTlhNTZjNjg2MTIxNDU4YjUpCiAgICAgICAgOwoKICAgICAgICAKICAgIAogICAgCiAgICAgICAgICAgIHZhciBmZWF0dXJlX2dyb3VwXzRlNzQ0Y2E4MTQwYjRhMjY4MzEzZGRkYzgxNmY5ZWQyID0gTC5mZWF0dXJlR3JvdXAoCiAgICAgICAgICAgICAgICB7fQogICAgICAgICAgICApLmFkZFRvKG1hcF8zNjhhODc5ZDkzN2U0NTY2YTJlNWE2NTYxMTJmOWRiMSk7CiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvbHlfbGluZV8yY2RlN2U3ZWRlNjI0MmVlODMwYmY2OTVlZjhiODRlMSA9IEwucG9seWxpbmUoCiAgICAgICAgICAgICAgICBbWzQzLjI1MzUwNDgxNzcyNDUwNSwgLTIuOTUzMDUzNzgxNDE2Njg2Nl0sIFs0My4yNTI2NjA5MjU5MjU3NywgLTIuOTU1MzQ5MTk5MzEwNzc4Nl0sIFs0My4yNTM2NjcxODMzNjksIC0yLjk1NjYwOTkxOTIxNjA2NThdLCBbNDMuMjUzODUxMDE5MzYwMjA1LCAtMi45NTkzMTcyMTQ5NDkyODVdLCBbNDMuMjU1Nzk3MTUyMzQxMzE2LCAtMi45NTk2NjM4ODEzNTY2NTQ3XSwgWzQzLjI1Njk3MTU5OTc1NDk5LCAtMi45NjAyNzk4NjkxMjIxNDM1XSwgWzQzLjI1ODY1NzMzNTUwMDc5LCAtMi45NjIzNDIzNjYxNDY1NTY3XSwgWzQzLjI2MTcyOTMzNTU3NjcyNSwgLTIuOTY1MDI4NDY0MjY3MDI3N10sIFs0My4yNjQwOTY5MDE4NjcyOCwgLTIuOTY1MzUxNzExNTQwNDI4NF0sIFs0My4yNjc5NTc3MzUyNjI4NiwgLTIuOTY4MzI2OTQxMTMxODc2N10sIFs0My4yNjMzNDk0ODU3Mzg0MiwgLTIuOTYzNDM3OTUzMTA3NzU3XSwgWzQzLjI2MzMwODA1MTgxNzE2LCAtMi45NjI0MDExNDYxMzI3NTRdLCBbNDMuMjYxMTUzODAwOTI1NzIsIC0yLjk1OTUyNjEzMTUwMTk5NjNdLCBbNDMuMjYwNjc1OTc0NDU4NTIsIC0yLjk1NTk0ODE0ODc5MTY5Ml0sIFs0My4yNTg5MzI3NDAwMjAwMywgLTIuOTU2NzU3MDU2NjEyNzQ0M10sIFs0My4yNTgzNTc4NTgyNjI5MSwgLTIuOTU1NzU3MDYxMDkyNzA3NV0sIFs0My4yNTc3NzE5MDYzNDcwMSwgLTIuOTU0MDQzNTExNTAzNDAzNl0sIFs0My4yNTU4MzA2MTM3NDk0OTUsIC0yLjk1MzgzOTI4MTEzODA2NDNdLCBbNDMuMjU4NjI2Njg3Njk5MTA2LCAtMi45NTE5MzY4MDI1MzMzNjM3XSwgWzQzLjI1OTQ2MDA0MzMwMDE1LCAtMi45NTIyNjkxOTMzODU4NTM0XSwgWzQzLjI1Nzk0NDg1ODYzODA3LCAtMi45NDkwNTU0Njg2NzYyODkzXSwgWzQzLjI1NzU4NzUzNzcwNDEwNCwgLTIuOTQyNTIzODU4Njc4NDM1XSwgWzQzLjI1NzMzMjI1NDIwNDYsIC0yLjkzNzYxMDU0ODM5NzE1MV0sIFs0My4yNTcyMjI3NDQ5NTI1MSwgLTIuOTM1MzAzNTI2MTcwNDg4XSwgWzQzLjI1NjAzNTkyMjM4NDgyNSwgLTIuOTMwMjQ4Mzg0OTgyNDkxNF0sIFs0My4yNTUzNTA4MjgwMjMwMywgLTIuOTI4MzQyNDUzNDE2NTY0XSwgWzQzLjI1NDc3MzA3Nzc1MTUyLCAtMi45MjY3NDM4OTQzNDMwNzQ0XSwgWzQzLjI1NDA4ODQ3OTQyNDEwNSwgLTIuOTI1MDgwMzY4ODQwODcwNl0sIFs0My4yNTUwMjkyNjI4MjU3NDQsIC0yLjkyMjU1NzcyNDYxNzcyNl1dLAogICAgICAgICAgICAgICAgeyJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwgImNvbG9yIjogIiM4ZGEwY2IiLCAiZGFzaEFycmF5IjogbnVsbCwgImRhc2hPZmZzZXQiOiBudWxsLCAiZmlsbCI6IGZhbHNlLCAiZmlsbENvbG9yIjogIiM4ZGEwY2IiLCAiZmlsbE9wYWNpdHkiOiAwLjIsICJmaWxsUnVsZSI6ICJldmVub2RkIiwgImxpbmVDYXAiOiAicm91bmQiLCAibGluZUpvaW4iOiAicm91bmQiLCAibm9DbGlwIjogZmFsc2UsICJvcGFjaXR5IjogMS4wLCAic21vb3RoRmFjdG9yIjogMS4wLCAic3Ryb2tlIjogdHJ1ZSwgIndlaWdodCI6IDN9CiAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF80ZTc0NGNhODE0MGI0YTI2ODMxM2RkZGM4MTZmOWVkMik7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgcG9wdXBfZTJjNWJmZTc4NjZmNDdjNWI3ZTYwOGRkM2ZiMTc0NWUgPSBMLnBvcHVwKHsibWF4V2lkdGgiOiAiMTAwJSJ9KTsKCiAgICAgICAgCiAgICAgICAgICAgIHZhciBodG1sX2FhMDBhZTY0NDUyOTQ0YTRhOGY2MzYzY2M5ZWI3YjAwID0gJChgPGRpdiBpZD0iaHRtbF9hYTAwYWU2NDQ1Mjk0NGE0YThmNjM2M2NjOWViN2IwMCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+PHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQgdGFibGUtaG92ZXIiPjx0cj48dGg+ZGlyZWN0aW9uX2lkPC90aD48dGQ+PC90ZD48L3RyPjx0cj48dGg+cm91dGVfaWQ8L3RoPjx0ZD4yMjY8L3RkPjwvdHI+PHRyPjx0aD5zZXJ2aWNlX2lkPC90aD48dGQ+MTwvdGQ+PC90cj48dHI+PHRoPnNoYXBlX2lkPC90aD48dGQ+c2hhcGVfMTE3PC90ZD48L3RyPjx0cj48dGg+dHJpcF9oZWFkc2lnbjwvdGg+PHRkPiBBdHh1cmk8L3RkPjwvdHI+PHRyPjx0aD50cmlwX2lkPC90aD48dGQ+NDEyNzk2PC90ZD48L3RyPjwvdGFibGU+PC9kaXY+YClbMF07CiAgICAgICAgICAgIHBvcHVwX2UyYzViZmU3ODY2ZjQ3YzViN2U2MDhkZDNmYjE3NDVlLnNldENvbnRlbnQoaHRtbF9hYTAwYWU2NDQ1Mjk0NGE0YThmNjM2M2NjOWViN2IwMCk7CiAgICAgICAgCgogICAgICAgIHBvbHlfbGluZV8yY2RlN2U3ZWRlNjI0MmVlODMwYmY2OTVlZjhiODRlMS5iaW5kUG9wdXAocG9wdXBfZTJjNWJmZTc4NjZmNDdjNWI3ZTYwOGRkM2ZiMTc0NWUpCiAgICAgICAgOwoKICAgICAgICAKICAgIAogICAgCiAgICAgICAgICAgIHZhciBmZWF0dXJlX2dyb3VwXzI4ZDQxZGNlNDIyZTRjNzBiMGU1M2MzMjRiYjBjYWY2ID0gTC5mZWF0dXJlR3JvdXAoCiAgICAgICAgICAgICAgICB7fQogICAgICAgICAgICApLmFkZFRvKG1hcF8zNjhhODc5ZDkzN2U0NTY2YTJlNWE2NTYxMTJmOWRiMSk7CiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvbHlfbGluZV8yY2U5ODdiZmU4Y2Y0Zjg3YTc5YjNmZDBmZDFlYWU1OSA9IEwucG9seWxpbmUoCiAgICAgICAgICAgICAgICBbWzQzLjI2MjUyNzkzMTQ3NDQ0LCAtMi45NDczNDI2NTY3NTA2NzZdLCBbNDMuMjY0OTI2MTY1MzQxMzM2LCAtMi45NDQwNTk5NzA5NDIyOTA4XSwgWzQzLjI2NDE0NzQ2OTE4ODc4NSwgLTIuOTQwNTE5NTQwNDgxNDY3XSwgWzQzLjI2MzM0ODAxMTU0Mjc0LCAtMi45MzY4NjkyNzEwMzAyNjM3XSwgWzQzLjI2MjY5MDc2MTk3NzAzLCAtMi45MzM3NTA5OTY0MzE1NTldLCBbNDMuMjYxNTI5OTQ2NDAwMTc0LCAtMi45Mjg0NzY1ODA4ODQ2NTEzXSwgWzQzLjI2MDQyMDY5NzY0NjE1NCwgLTIuOTIyNzU1MzgyOTA3ODQ1NF0sIFs0My4yNjQwOTk1MTM1MDAwMiwgLTIuOTIyNTkwMTEyMDcyNTg3N10sIFs0My4yNjQ3NTAzNzM1NDcwNDUsIC0yLjkxODQxMzg4MDAzNTk5ODRdLCBbNDMuMjYxNDE4MjY4NTE3ODE1LCAtMi45MTU4NzAxNjc5NjQ4Ml0sIFs0My4yNjIzOTE0MDAwNzExNDUsIC0yLjkxNTMwNzM1NDM4Mjk0OV0sIFs0My4yNjQ2NjY2MTIzNzA3OSwgLTIuOTEzNjE0ODI0Mjg1OTc3Nl0sIFs0My4yNjQ3NzI3MzM0NDM3MzUsIC0yLjkxMTc5NzgxNjY5NTgzNV0sIFs0My4yNjIyNTMwMzcyMjc3OSwgLTIuOTEzMDczMDM3ODA1MjY1NF0sIFs0My4yNjEyODk5NzA3ODUzMzQsIC0yLjkxMTQ0ODk5MDc2Mjc5MDVdXSwKICAgICAgICAgICAgICAgIHsiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsICJjb2xvciI6ICIjZTc4YWMzIiwgImRhc2hBcnJheSI6IG51bGwsICJkYXNoT2Zmc2V0IjogbnVsbCwgImZpbGwiOiBmYWxzZSwgImZpbGxDb2xvciI6ICIjZTc4YWMzIiwgImZpbGxPcGFjaXR5IjogMC4yLCAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsICJsaW5lQ2FwIjogInJvdW5kIiwgImxpbmVKb2luIjogInJvdW5kIiwgIm5vQ2xpcCI6IGZhbHNlLCAib3BhY2l0eSI6IDEuMCwgInNtb290aEZhY3RvciI6IDEuMCwgInN0cm9rZSI6IHRydWUsICJ3ZWlnaHQiOiAzfQogICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMjhkNDFkY2U0MjJlNGM3MGIwZTUzYzMyNGJiMGNhZjYpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIHBvcHVwX2EyNzFkZGYwNTc5NDQ4N2NhYzUzMzNiZmZmYTg3NjQ4ID0gTC5wb3B1cCh7Im1heFdpZHRoIjogIjEwMCUifSk7CgogICAgICAgIAogICAgICAgICAgICB2YXIgaHRtbF85ZGZlMzMwYzk0NjY0ODhlYTQ4ZWFmMWE0MjhiMDlkNiA9ICQoYDxkaXYgaWQ9Imh0bWxfOWRmZTMzMGM5NDY2NDg4ZWE0OGVhZjFhNDI4YjA5ZDYiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPjx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIHRhYmxlLWhvdmVyIj48dHI+PHRoPmRpcmVjdGlvbl9pZDwvdGg+PHRkPjwvdGQ+PC90cj48dHI+PHRoPnJvdXRlX2lkPC90aD48dGQ+MjI3PC90ZD48L3RyPjx0cj48dGg+c2VydmljZV9pZDwvdGg+PHRkPjE8L3RkPjwvdHI+PHRyPjx0aD5zaGFwZV9pZDwvdGg+PHRkPnNoYXBlXzExNDwvdGQ+PC90cj48dHI+PHRoPnRyaXBfaGVhZHNpZ248L3RoPjx0ZD4gQXJhYmVsbGE8L3RkPjwvdHI+PHRyPjx0aD50cmlwX2lkPC90aD48dGQ+NDE0OTM5PC90ZD48L3RyPjwvdGFibGU+PC9kaXY+YClbMF07CiAgICAgICAgICAgIHBvcHVwX2EyNzFkZGYwNTc5NDQ4N2NhYzUzMzNiZmZmYTg3NjQ4LnNldENvbnRlbnQoaHRtbF85ZGZlMzMwYzk0NjY0ODhlYTQ4ZWFmMWE0MjhiMDlkNik7CiAgICAgICAgCgogICAgICAgIHBvbHlfbGluZV8yY2U5ODdiZmU4Y2Y0Zjg3YTc5YjNmZDBmZDFlYWU1OS5iaW5kUG9wdXAocG9wdXBfYTI3MWRkZjA1Nzk0NDg3Y2FjNTMzM2JmZmZhODc2NDgpCiAgICAgICAgOwoKICAgICAgICAKICAgIAogICAgCiAgICAgICAgICAgIHZhciBmZWF0dXJlX2dyb3VwXzIxMDFmOGY4NGQwNjQyNzZiN2Y1ZTgwNWE2MzU1MDI4ID0gTC5mZWF0dXJlR3JvdXAoCiAgICAgICAgICAgICAgICB7fQogICAgICAgICAgICApLmFkZFRvKG1hcF8zNjhhODc5ZDkzN2U0NTY2YTJlNWE2NTYxMTJmOWRiMSk7CiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvbHlfbGluZV81MmJkMWY2ODMzM2Q0MjVkOTNhOGEyM2NiODhkZDE5YSA9IEwucG9seWxpbmUoCiAgICAgICAgICAgICAgICBbWzQzLjI2MTI4OTk3MDc4NTMzNCwgLTIuOTExNDQ4OTkwNzYyNzkwNV0sIFs0My4yNjA2NTgxNDI5NDc1OSwgLTIuOTEyNTk0NjQzMzg4MDg4XSwgWzQzLjI2MTUzMTAwMjA2NTQxLCAtMi45MTUyNzQyNjc1NDQ0NDY3XSwgWzQzLjI2NDkwMDI3Mzg0NTQ2LCAtMi45MTgzMzU3MzIyMDAyNjA4XSwgWzQzLjI2NDk4MjI2MTI4ODc1LCAtMi45MjI0NzY0NzA3NTAyNTk3XSwgWzQzLjI2MzA2MTM2NjU3OTA2NiwgLTIuOTI3NDUyMTEwOTgzMjY1NF0sIFs0My4yNjI2MDIyMzY1MDY1OTUsIC0yLjkyOTI2OTM5NjIzMDU4ODVdLCBbNDMuMjU5Nzk2NDgyNDEyMjg0LCAtMi45MzI1MDgyMTYxMTgyNDFdLCBbNDMuMjYwMjg0MzY5MTk2NDA1LCAtMi45MzcwODMwODY1NDk1MjE3XSwgWzQzLjI2MTM1MzE4NzM0NTExNSwgLTIuOTQxOTk5ODU5ODUyNzg1XSwgWzQzLjI2MjE1MzEwMzkyNTA5NCwgLTIuOTQ1NjQ5MDM3NDYyNDkxN10sIFs0My4yNjI1Mjc5MzE0NzQ0NCwgLTIuOTQ3MzQyNjU2NzUwNjc2XV0sCiAgICAgICAgICAgICAgICB7ImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLCAiY29sb3IiOiAiI2E2ZDg1NCIsICJkYXNoQXJyYXkiOiBudWxsLCAiZGFzaE9mZnNldCI6IG51bGwsICJmaWxsIjogZmFsc2UsICJmaWxsQ29sb3IiOiAiI2E2ZDg1NCIsICJmaWxsT3BhY2l0eSI6IDAuMiwgImZpbGxSdWxlIjogImV2ZW5vZGQiLCAibGluZUNhcCI6ICJyb3VuZCIsICJsaW5lSm9pbiI6ICJyb3VuZCIsICJub0NsaXAiOiBmYWxzZSwgIm9wYWNpdHkiOiAxLjAsICJzbW9vdGhGYWN0b3IiOiAxLjAsICJzdHJva2UiOiB0cnVlLCAid2VpZ2h0IjogM30KICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzIxMDFmOGY4NGQwNjQyNzZiN2Y1ZTgwNWE2MzU1MDI4KTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBwb3B1cF8zOWVhYzI1MTk1Njg0N2Y2ODMyYjAzYzMwNDZlMmU3YyA9IEwucG9wdXAoeyJtYXhXaWR0aCI6ICIxMDAlIn0pOwoKICAgICAgICAKICAgICAgICAgICAgdmFyIGh0bWxfZGZhZmE4OGUyMThmNDI4OTg3YTlkMTczNDFiYmQzNjAgPSAkKGA8ZGl2IGlkPSJodG1sX2RmYWZhODhlMjE4ZjQyODk4N2E5ZDE3MzQxYmJkMzYwIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij48dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCB0YWJsZS1ob3ZlciI+PHRyPjx0aD5kaXJlY3Rpb25faWQ8L3RoPjx0ZD48L3RkPjwvdHI+PHRyPjx0aD5yb3V0ZV9pZDwvdGg+PHRkPjIyODwvdGQ+PC90cj48dHI+PHRoPnNlcnZpY2VfaWQ8L3RoPjx0ZD4xPC90ZD48L3RyPjx0cj48dGg+c2hhcGVfaWQ8L3RoPjx0ZD5zaGFwZV8wMTU8L3RkPjwvdHI+PHRyPjx0aD50cmlwX2hlYWRzaWduPC90aD48dGQ+IEFyYWJlbGxhPC90ZD48L3RyPjx0cj48dGg+dHJpcF9pZDwvdGg+PHRkPjQxNTA4MDwvdGQ+PC90cj48L3RhYmxlPjwvZGl2PmApWzBdOwogICAgICAgICAgICBwb3B1cF8zOWVhYzI1MTk1Njg0N2Y2ODMyYjAzYzMwNDZlMmU3Yy5zZXRDb250ZW50KGh0bWxfZGZhZmE4OGUyMThmNDI4OTg3YTlkMTczNDFiYmQzNjApOwogICAgICAgIAoKICAgICAgICBwb2x5X2xpbmVfNTJiZDFmNjgzMzNkNDI1ZDkzYThhMjNjYjg4ZGQxOWEuYmluZFBvcHVwKHBvcHVwXzM5ZWFjMjUxOTU2ODQ3ZjY4MzJiMDNjMzA0NmUyZTdjKQogICAgICAgIDsKCiAgICAgICAgCiAgICAKICAgIAogICAgICAgICAgICB2YXIgZmVhdHVyZV9ncm91cF83ZGU5Nzc4ZTEwYjA0MTExYWI2NjM2MjI4NWUxOWFjMiA9IEwuZmVhdHVyZUdyb3VwKAogICAgICAgICAgICAgICAge30KICAgICAgICAgICAgKS5hZGRUbyhtYXBfMzY4YTg3OWQ5MzdlNDU2NmEyZTVhNjU2MTEyZjlkYjEpOwogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb2x5X2xpbmVfZDc3MTEyOGFiYWM3NDhmYThmNjdhNGI2Y2Q2YjE4ZDggPSBMLnBvbHlsaW5lKAogICAgICAgICAgICAgICAgW1s0My4yODE3MzE3Mjk2MjMwNTQsIC0yLjk2MzAyNTEyNDA1MjExMDRdLCBbNDMuMjc5NDA0OTE2MjU2NDUsIC0yLjk2MTczNzkxOTg0MTYyODVdLCBbNDMuMjc3NzA5MjI2MDA4MzUsIC0yLjk2MDc5MjY0NTkwMTI1N10sIFs0My4yNzU4NzIxMjM4MzEwMiwgLTIuOTU5NzY0OTM3ODI4NjEzN10sIFs0My4yNzM3NjkyMjM3MjM0MzQsIC0yLjk1NzU0ODE4OTAzMzQ1NzRdLCBbNDMuMjcyNzEwNDIyMzU5NjUsIC0yLjk1NTQzNTEyMjQzMjUzM10sIFs0My4yNzE5MjU0OTgwMDkwMjYsIC0yLjk1MDA5NjM0NjEwMDM5OTddLCBbNDMuMjcxNzE2NTQ3MDg3NzA2LCAtMi45NDQ5MzU5MjQ2NzYzMzZdLCBbNDMuMjY5NzYxMTg0NzcwMjgsIC0yLjk0MDcxOTkwMDUwNTQzNl0sIFs0My4yNzAxODEyNzk4MDU4OCwgLTIuOTM3Mjc0MDY1MjcxMDA0NV0sIFs0My4yNjk2ODAxMTIwNjY3OTQsIC0yLjkzMTM4MzA2MjgyNTQyNjVdLCBbNDMuMjY2NDM0OTAzODkxMzUsIC0yLjkyNjgyODE1MDA3NTM3M10sIFs0My4yNjQ0OTIxMzE2MDA2MSwgLTIuOTI0NTA2MDc1ODM0MzAzM10sIFs0My4yNjI4NDUxMjExMjIxMDUsIC0yLjkyMzA1OTE0MzM5OTg2MTZdLCBbNDMuMjU5Nzk1ODMzMTIzMjksIC0yLjkyNDA4NzI3OTMxMzk0OV0sIFs0My4yNjA4NDkxNDE1NjY4LCAtMi45Mjc5MTY4MjUzNDAzMjE2XSwgWzQzLjI1NzU5MjkzMDExNjcyLCAtMi45MzM1MzQyOTAwNjA0NDEzXSwgWzQzLjI1Mzg0OTcyMzA1NTc1LCAtMi45MzQwMjc4OTQwNDA1MDA3XSwgWzQzLjI1MTI3OTc5ODM2MzE5LCAtMi45MzQ2OTM2MzYxNjczOTIzXSwgWzQzLjI0OTYzOTg5OTgyMjA3LCAtMi45MzM3NjE4NTQ3NDkxNzldLCBbNDMuMjQ4MzA0Mzc1Nzc0NjE2LCAtMi45MzMyMDU3NzUwMzQ0NTM2XSwgWzQzLjI0NzY2MDI0NTY1NTg0NCwgLTIuOTMxNjE5MTMzMTE1MTU3XSwgWzQzLjI0Njg5MDg4ODM3Mjc3NSwgLTIuOTI5NzU0NTEzOTE3ODM4NV0sIFs0My4yNDg3NTI1MzY1Nzk0NywgLTIuOTI4MDU4NDMxNTA5OTE4XSwgWzQzLjI0OTQxNzYxMDI3MDg4LCAtMi45MjY4OTg4OTcwNTUzMTA1XV0sCiAgICAgICAgICAgICAgICB7ImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLCAiY29sb3IiOiAiI2ZmZDkyZiIsICJkYXNoQXJyYXkiOiBudWxsLCAiZGFzaE9mZnNldCI6IG51bGwsICJmaWxsIjogZmFsc2UsICJmaWxsQ29sb3IiOiAiI2ZmZDkyZiIsICJmaWxsT3BhY2l0eSI6IDAuMiwgImZpbGxSdWxlIjogImV2ZW5vZGQiLCAibGluZUNhcCI6ICJyb3VuZCIsICJsaW5lSm9pbiI6ICJyb3VuZCIsICJub0NsaXAiOiBmYWxzZSwgIm9wYWNpdHkiOiAxLjAsICJzbW9vdGhGYWN0b3IiOiAxLjAsICJzdHJva2UiOiB0cnVlLCAid2VpZ2h0IjogM30KICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzdkZTk3NzhlMTBiMDQxMTFhYjY2MzYyMjg1ZTE5YWMyKTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBwb3B1cF8zODU4NTgyZDljYWQ0ZmVkYjYzN2RkOTJiYzE2MDg3MyA9IEwucG9wdXAoeyJtYXhXaWR0aCI6ICIxMDAlIn0pOwoKICAgICAgICAKICAgICAgICAgICAgdmFyIGh0bWxfMzBmMTFkYWYwNWNkNDQ4ODlhNGVhYTlmYjE1YWI5YjMgPSAkKGA8ZGl2IGlkPSJodG1sXzMwZjExZGFmMDVjZDQ0ODg5YTRlYWE5ZmIxNWFiOWIzIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij48dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCB0YWJsZS1ob3ZlciI+PHRyPjx0aD5kaXJlY3Rpb25faWQ8L3RoPjx0ZD48L3RkPjwvdHI+PHRyPjx0aD5yb3V0ZV9pZDwvdGg+PHRkPjIyOTwvdGQ+PC90cj48dHI+PHRoPnNlcnZpY2VfaWQ8L3RoPjx0ZD4xPC90ZD48L3RyPjx0cj48dGg+c2hhcGVfaWQ8L3RoPjx0ZD5zaGFwZV8wMDA8L3RkPjwvdHI+PHRyPjx0aD50cmlwX2hlYWRzaWduPC90aD48dGQ+IFNhbiBJZ25hemlvPC90ZD48L3RyPjx0cj48dGg+dHJpcF9pZDwvdGg+PHRkPjQyNDU1MTwvdGQ+PC90cj48L3RhYmxlPjwvZGl2PmApWzBdOwogICAgICAgICAgICBwb3B1cF8zODU4NTgyZDljYWQ0ZmVkYjYzN2RkOTJiYzE2MDg3My5zZXRDb250ZW50KGh0bWxfMzBmMTFkYWYwNWNkNDQ4ODlhNGVhYTlmYjE1YWI5YjMpOwogICAgICAgIAoKICAgICAgICBwb2x5X2xpbmVfZDc3MTEyOGFiYWM3NDhmYThmNjdhNGI2Y2Q2YjE4ZDguYmluZFBvcHVwKHBvcHVwXzM4NTg1ODJkOWNhZDRmZWRiNjM3ZGQ5MmJjMTYwODczKQogICAgICAgIDsKCiAgICAgICAgCiAgICAKICAgIAogICAgICAgICAgICB2YXIgZmVhdHVyZV9ncm91cF8xYjg0MTdhZWU5NDk0ZTMwODg0ZTM2MDlhMzRkNTJiYSA9IEwuZmVhdHVyZUdyb3VwKAogICAgICAgICAgICAgICAge30KICAgICAgICAgICAgKS5hZGRUbyhtYXBfMzY4YTg3OWQ5MzdlNDU2NmEyZTVhNjU2MTEyZjlkYjEpOwogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb2x5X2xpbmVfOWFmZmEyN2ViNmI2NDYyM2FiNGM1MDA4OTU4YjM5OTIgPSBMLnBvbHlsaW5lKAogICAgICAgICAgICAgICAgW1s0My4yNDk0MTc2MTAyNzA4OCwgLTIuOTI2ODk4ODk3MDU1MzEwNV0sIFs0My4yNDg1NDYxNDMxNDk2LCAtMi45Mjk5NTQwODkzOTcxODE2XSwgWzQzLjI0OTM2ODA4OTY3MzcxNiwgLTIuOTMxNTUzMzg2MTA2OTg1Nl0sIFs0My4yNTA2MzEwNzYyNTY1MDQsIC0yLjkzMzY3NjU2NjM2MTI3Ml0sIFs0My4yNTI2OTM2Nzk2MTI2OCwgLTIuOTM0Mjg1NzQyMTUwODc5NV0sIFs0My4yNTQ4Nzc5NDM1OTI0OSwgLTIuOTMzNDAzOTgzNjE1NTc1NF0sIFs0My4yNTYzNDM4Mjg1NTk3OSwgLTIuOTMzMjE1MTcyNTM4NzkzXSwgWzQzLjI1NzkxNDYyMTY1NTc4LCAtMi45MzI4MjIyNjIyODgwOTFdLCBbNDMuMjYwNjM2NjAyNTQ3ODIsIC0yLjkyNzk5ODcyMDYxNjc2XSwgWzQzLjI2MzkzODc1OTE4MDg4LCAtMi45MjM1NzkwODA0ODA3MjI3XSwgWzQzLjI2NjgzMDEyNjg3MjE4NiwgLTIuOTI3MjM2MDkzMTA1NjE4NV0sIFs0My4yNjkyMjY0MTE4MTI2NDYsIC0yLjkzMDMzNjUxNTYzMjcwOF0sIFs0My4yNzAyMjQzNDAwNzYwNTUsIC0yLjkzNzYwNDkwNDA5Nzc5Ml0sIFs0My4yNzA5NzIxNzgzMzM1NSwgLTIuOTQwODU3NDI3MjA0Mjc0NV0sIFs0My4yNzE5NDc4MDYwNzU0NywgLTIuOTQ1MDg1Mzk1NzcyMjU0N10sIFs0My4yNzIxMjE1NzU0Nzk0OSwgLTIuOTUwNTk0MjA4NzM2MjkxNV0sIFs0My4yNzMzMDQ5MjgwMjI2LCAtMi45NTUzMzQ4MzE1MTMxOTEzXSwgWzQzLjI3NDcxOTYxNDAzNjU2LCAtMi45NTg1ODk1NzE0NTIyMTEyXSwgWzQzLjI3Njc3NjAxNTM1MjA1NiwgLTIuOTYwMDU2MTA1MTAyMzUzN10sIFs0My4yNzg4MzMzNTIwOTQ4NCwgLTIuOTYxMTk0NDA4MDM5ODQzNl0sIFs0My4yODE3MDUzMDI5NDA3MTUsIC0yLjk2MjgxMjg1MzU0Nzg5N10sIFs0My4yODE3MzE3Mjk2MjMwNTQsIC0yLjk2MzAyNTEyNDA1MjExMDRdXSwKICAgICAgICAgICAgICAgIHsiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsICJjb2xvciI6ICIjZTVjNDk0IiwgImRhc2hBcnJheSI6IG51bGwsICJkYXNoT2Zmc2V0IjogbnVsbCwgImZpbGwiOiBmYWxzZSwgImZpbGxDb2xvciI6ICIjZTVjNDk0IiwgImZpbGxPcGFjaXR5IjogMC4yLCAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsICJsaW5lQ2FwIjogInJvdW5kIiwgImxpbmVKb2luIjogInJvdW5kIiwgIm5vQ2xpcCI6IGZhbHNlLCAib3BhY2l0eSI6IDEuMCwgInNtb290aEZhY3RvciI6IDEuMCwgInN0cm9rZSI6IHRydWUsICJ3ZWlnaHQiOiAzfQogICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMWI4NDE3YWVlOTQ5NGUzMDg4NGUzNjA5YTM0ZDUyYmEpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIHBvcHVwXzQ0ZTBiODM3YzM3MDQ2MTc4MmRmOGU5MmNhOTNlMDNmID0gTC5wb3B1cCh7Im1heFdpZHRoIjogIjEwMCUifSk7CgogICAgICAgIAogICAgICAgICAgICB2YXIgaHRtbF9lNDU3ZDMyNzZkNjc0Y2IxOTY5OWE2NzBiNmUxYmVkYiA9ICQoYDxkaXYgaWQ9Imh0bWxfZTQ1N2QzMjc2ZDY3NGNiMTk2OTlhNjcwYjZlMWJlZGIiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPjx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIHRhYmxlLWhvdmVyIj48dHI+PHRoPmRpcmVjdGlvbl9pZDwvdGg+PHRkPjwvdGQ+PC90cj48dHI+PHRoPnJvdXRlX2lkPC90aD48dGQ+MjMwPC90ZD48L3RyPjx0cj48dGg+c2VydmljZV9pZDwvdGg+PHRkPjE8L3RkPjwvdHI+PHRyPjx0aD5zaGFwZV9pZDwvdGg+PHRkPnNoYXBlXzA3OTwvdGQ+PC90cj48dHI+PHRoPnRyaXBfaGVhZHNpZ248L3RoPjx0ZD4gU2FuIElnbmF6aW88L3RkPjwvdHI+PHRyPjx0aD50cmlwX2lkPC90aD48dGQ+NDI0NjM0PC90ZD48L3RyPjwvdGFibGU+PC9kaXY+YClbMF07CiAgICAgICAgICAgIHBvcHVwXzQ0ZTBiODM3YzM3MDQ2MTc4MmRmOGU5MmNhOTNlMDNmLnNldENvbnRlbnQoaHRtbF9lNDU3ZDMyNzZkNjc0Y2IxOTY5OWE2NzBiNmUxYmVkYik7CiAgICAgICAgCgogICAgICAgIHBvbHlfbGluZV85YWZmYTI3ZWI2YjY0NjIzYWI0YzUwMDg5NThiMzk5Mi5iaW5kUG9wdXAocG9wdXBfNDRlMGI4MzdjMzcwNDYxNzgyZGY4ZTkyY2E5M2UwM2YpCiAgICAgICAgOwoKICAgICAgICAKICAgIAogICAgCiAgICAgICAgICAgIHZhciBmZWF0dXJlX2dyb3VwXzAwNGI2M2YzMWQ0ZjQ5OWQ5NWY0ZmNlZWZkMWY0MDM2ID0gTC5mZWF0dXJlR3JvdXAoCiAgICAgICAgICAgICAgICB7fQogICAgICAgICAgICApLmFkZFRvKG1hcF8zNjhhODc5ZDkzN2U0NTY2YTJlNWE2NTYxMTJmOWRiMSk7CiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvbHlfbGluZV8xZDdiMzc2MmQxNTc0Y2Y4OWNhYmRiM2E3Y2UwZTZlYSA9IEwucG9seWxpbmUoCiAgICAgICAgICAgICAgICBbWzQzLjI0NjUzODQ5MTIzMDc5NCwgLTIuOTQxMDM3OTU5NjcxMjM4Nl0sIFs0My4yNDYxNzY1MTk5NjUyMywgLTIuOTQwOTY2MzY4NjcyMTAyXSwgWzQzLjI0NTIxMTMxNTk2MzIsIC0yLjkzODI4Mjc2NTAxNjE4MTZdLCBbNDMuMjQ1OTI3MDAwMjIxMTQsIC0yLjkzODA3NzA4NzA3MjQwNjRdLCBbNDMuMjQ4OTM4ODMzMjQ2MzU2LCAtMi45Mzk4MzE0NjE1Mjg5MDE2XSwgWzQzLjI1MDk0NTY3MzkwNDY3NCwgLTIuOTQyMTU5MjMwOTQyODU5Ml0sIFs0My4yNTE3OTE2NDgxODEzNzQsIC0yLjk0NDAwODAyMjk1NDMyMl0sIFs0My4yNTI1NTA2OTkxODM5LCAtMi45NDU1NTMwODc4NTYzNzJdLCBbNDMuMjU0MzMwODMwMzM3NCwgLTIuOTQ0NTk0Mzk5OTQxNzU4M10sIFs0My4yNTY2NDczMTU2MDE1NSwgLTIuOTQyMjY1MTIyMzIxMjcwNF0sIFs0My4yNTg2MDM4NTgwMjkwMywgLTIuOTQxMjUyMTYyMTAzMTQ1Nl0sIFs0My4yNjE1OTE0MzkwNDA0MiwgLTIuOTQwMDMyNDUwMTkwNzU2XSwgWzQzLjI2MzYxNTE0NjM1MzI3NCwgLTIuOTM5MTg3MzcxODk2MTk5XSwgWzQzLjI2MzM0ODAxMTU0Mjc0LCAtMi45MzY4NjkyNzEwMzAyNjM3XSwgWzQzLjI2MjY5MDc2MTk3NzAzLCAtMi45MzM3NTA5OTY0MzE1NTldLCBbNDMuMjYxNTI5OTQ2NDAwMTc0LCAtMi45Mjg0NzY1ODA4ODQ2NTEzXSwgWzQzLjI2MzkzODc1OTE4MDg4LCAtMi45MjM1NzkwODA0ODA3MjI3XSwgWzQzLjI2NTIzMDg2NTMzMDkwNiwgLTIuOTI1MjIzOTc3ODMzMjQzNl0sIFs0My4yNjcxODQ2MDMzNzkwMTUsIC0yLjkyNTE4NDM2NjI3MTQ3ODddLCBbNDMuMjY2MjQxMzE0Mjk5MDgsIC0yLjkyMjg4Mzg0ODE2NDQ5NjVdLCBbNDMuMjY2OTE0NjU0Mzc1NjYsIC0yLjkyMjczNDg1Mjc0OTMxNl0sIFs0My4yNjgwNTI1NjkyNTU5MzYsIC0yLjkyNDQ0MzY4ODA3NjMzMl0sIFs0My4yNjgzNzExODA3ODM2NDYsIC0yLjkyNjQ3ODM1ODQxMDAwNF1dLAogICAgICAgICAgICAgICAgeyJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwgImNvbG9yIjogIiNiM2IzYjMiLCAiZGFzaEFycmF5IjogbnVsbCwgImRhc2hPZmZzZXQiOiBudWxsLCAiZmlsbCI6IGZhbHNlLCAiZmlsbENvbG9yIjogIiNiM2IzYjMiLCAiZmlsbE9wYWNpdHkiOiAwLjIsICJmaWxsUnVsZSI6ICJldmVub2RkIiwgImxpbmVDYXAiOiAicm91bmQiLCAibGluZUpvaW4iOiAicm91bmQiLCAibm9DbGlwIjogZmFsc2UsICJvcGFjaXR5IjogMS4wLCAic21vb3RoRmFjdG9yIjogMS4wLCAic3Ryb2tlIjogdHJ1ZSwgIndlaWdodCI6IDN9CiAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8wMDRiNjNmMzFkNGY0OTlkOTVmNGZjZWVmZDFmNDAzNik7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgcG9wdXBfZjkxNWFhZGQxN2Y5NDk4NWI0NzJmMmU0MWUyYjM5MzEgPSBMLnBvcHVwKHsibWF4V2lkdGgiOiAiMTAwJSJ9KTsKCiAgICAgICAgCiAgICAgICAgICAgIHZhciBodG1sX2EwNjhjOGQzM2MxMzRjOGQ4ZjRlMTYwZTg1MTY0ZWNiID0gJChgPGRpdiBpZD0iaHRtbF9hMDY4YzhkMzNjMTM0YzhkOGY0ZTE2MGU4NTE2NGVjYiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+PHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQgdGFibGUtaG92ZXIiPjx0cj48dGg+ZGlyZWN0aW9uX2lkPC90aD48dGQ+PC90ZD48L3RyPjx0cj48dGg+cm91dGVfaWQ8L3RoPjx0ZD4yMzE8L3RkPjwvdHI+PHRyPjx0aD5zZXJ2aWNlX2lkPC90aD48dGQ+MTwvdGQ+PC90cj48dHI+PHRoPnNoYXBlX2lkPC90aD48dGQ+c2hhcGVfMTEwPC90ZD48L3RyPjx0cj48dGg+dHJpcF9oZWFkc2lnbjwvdGg+PHRkPiBDYXN0YcOxb3MvR2F6dGVsZWt1PC90ZD48L3RyPjx0cj48dGg+dHJpcF9pZDwvdGg+PHRkPjQxMDI2NjwvdGQ+PC90cj48L3RhYmxlPjwvZGl2PmApWzBdOwogICAgICAgICAgICBwb3B1cF9mOTE1YWFkZDE3Zjk0OTg1YjQ3MmYyZTQxZTJiMzkzMS5zZXRDb250ZW50KGh0bWxfYTA2OGM4ZDMzYzEzNGM4ZDhmNGUxNjBlODUxNjRlY2IpOwogICAgICAgIAoKICAgICAgICBwb2x5X2xpbmVfMWQ3YjM3NjJkMTU3NGNmODljYWJkYjNhN2NlMGU2ZWEuYmluZFBvcHVwKHBvcHVwX2Y5MTVhYWRkMTdmOTQ5ODViNDcyZjJlNDFlMmIzOTMxKQogICAgICAgIDsKCiAgICAgICAgCiAgICAKICAgIAogICAgICAgICAgICB2YXIgZmVhdHVyZV9ncm91cF81MmFkYzAyMmViM2E0OTkwYTk4NzBhMGQ4OWJjZTQ4ZSA9IEwuZmVhdHVyZUdyb3VwKAogICAgICAgICAgICAgICAge30KICAgICAgICAgICAgKS5hZGRUbyhtYXBfMzY4YTg3OWQ5MzdlNDU2NmEyZTVhNjU2MTEyZjlkYjEpOwogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb2x5X2xpbmVfMmFmODRmZDllNjdkNDFmMzk0OGY5ODZiYjg3YTAxMTcgPSBMLnBvbHlsaW5lKAogICAgICAgICAgICAgICAgW1s0My4yNjgzNzExODA3ODM2NDYsIC0yLjkyNjQ3ODM1ODQxMDAwNF0sIFs0My4yNjkyMDc2NDI3NTMwOTUsIC0yLjkyODYyODQ5ODE5MDgwNzVdLCBbNDMuMjY2MjA4ODk0NTIyODIsIC0yLjkyNTQ5MDk3Nzg5ODYwMDddLCBbNDMuMjY0NDkyMTMxNjAwNjEsIC0yLjkyNDUwNjA3NTgzNDMwMzNdLCBbNDMuMjYyODQ1MTIxMTIyMTA1LCAtMi45MjMwNTkxNDMzOTk4NjE2XSwgWzQzLjI1OTc5NTgzMzEyMzI5LCAtMi45MjQwODcyNzkzMTM5NDldLCBbNDMuMjYxNzMyNTg4MjYxMjgsIC0yLjkyODk2NzA0MTM4NTY0ODNdLCBbNDMuMjYyNzA5ODY3MzkwOTcsIC0yLjkzMzQ1NzIzODcwMjE1NzRdLCBbNDMuMjYzMjg5NzI1MzM5NTUsIC0yLjkzNTk4NzI3NDM0NzM4MzRdLCBbNDMuMjYzNjQ0NjIyMzk5NTQ2LCAtMi45MzkyODYyNDU4MTI0MTA1XSwgWzQzLjI2MTE3MTIxMjU0MzEzLCAtMi45NDAyNzE5NzM5ODg0ODY0XSwgWzQzLjI1ODM1ODk1MTY3NjA0NCwgLTIuOTQxNDExMzc4Nzc1NjMxN10sIFs0My4yNTcyNzU0MTUxMjQ2OCwgLTIuOTQxNzI4OTUzNjU4ODg1XSwgWzQzLjI1NDM2NDAxMjk1OTA1LCAtMi45NDQ3MTg1MDE1ODgxMTE0XSwgWzQzLjI1MjIwNDIxMTg0NzAxLCAtMi45NDUwMDQ3MzQ4Njg2OTg3XSwgWzQzLjI1MTQ1NDQ1MDM5MjAyNSwgLTIuOTQzNDY1MTc3ODk3OTI2XSwgWzQzLjI1MDg1NTQ1MzU1NDYxNCwgLTIuOTQyMTczMzI0NDMzNTk1NV0sIFs0My4yNDg5MDg5OTA3MDMxNCwgLTIuOTM5OTIyNjcyMDMzMjkyM10sIFs0My4yNDU2MzY3OTM1MTUwMywgLTIuOTM3MTQwOTA5NTg2MDQxXSwgWzQzLjI0NTE4MDk1OTc1NjU5NSwgLTIuOTM4NTYxMjA1NzQ5OTczXSwgWzQzLjI0NjUzODQ5MTIzMDc5NCwgLTIuOTQxMDM3OTU5NjcxMjM4Nl1dLAogICAgICAgICAgICAgICAgeyJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwgImNvbG9yIjogIiM2NmMyYTUiLCAiZGFzaEFycmF5IjogbnVsbCwgImRhc2hPZmZzZXQiOiBudWxsLCAiZmlsbCI6IGZhbHNlLCAiZmlsbENvbG9yIjogIiM2NmMyYTUiLCAiZmlsbE9wYWNpdHkiOiAwLjIsICJmaWxsUnVsZSI6ICJldmVub2RkIiwgImxpbmVDYXAiOiAicm91bmQiLCAibGluZUpvaW4iOiAicm91bmQiLCAibm9DbGlwIjogZmFsc2UsICJvcGFjaXR5IjogMS4wLCAic21vb3RoRmFjdG9yIjogMS4wLCAic3Ryb2tlIjogdHJ1ZSwgIndlaWdodCI6IDN9CiAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF81MmFkYzAyMmViM2E0OTkwYTk4NzBhMGQ4OWJjZTQ4ZSk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgcG9wdXBfMWZhMzI2OTQ2MzViNGY1NDg2NzIxMjY2NDI2N2E5M2YgPSBMLnBvcHVwKHsibWF4V2lkdGgiOiAiMTAwJSJ9KTsKCiAgICAgICAgCiAgICAgICAgICAgIHZhciBodG1sXzc0OGE5NTZjNmZhOTQ4YzZiMjQ4N2NlZjVlZjRjYjI5ID0gJChgPGRpdiBpZD0iaHRtbF83NDhhOTU2YzZmYTk0OGM2YjI0ODdjZWY1ZWY0Y2IyOSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+PHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQgdGFibGUtaG92ZXIiPjx0cj48dGg+ZGlyZWN0aW9uX2lkPC90aD48dGQ+PC90ZD48L3RyPjx0cj48dGg+cm91dGVfaWQ8L3RoPjx0ZD4yMzI8L3RkPjwvdHI+PHRyPjx0aD5zZXJ2aWNlX2lkPC90aD48dGQ+MTwvdGQ+PC90cj48dHI+PHRoPnNoYXBlX2lkPC90aD48dGQ+c2hhcGVfMDExPC90ZD48L3RyPjx0cj48dGg+dHJpcF9oZWFkc2lnbjwvdGg+PHRkPiBDYXN0YcOxb3MvR2F6dGVsZWt1PC90ZD48L3RyPjx0cj48dGg+dHJpcF9pZDwvdGg+PHRkPjQxMDQxMTwvdGQ+PC90cj48L3RhYmxlPjwvZGl2PmApWzBdOwogICAgICAgICAgICBwb3B1cF8xZmEzMjY5NDYzNWI0ZjU0ODY3MjEyNjY0MjY3YTkzZi5zZXRDb250ZW50KGh0bWxfNzQ4YTk1NmM2ZmE5NDhjNmIyNDg3Y2VmNWVmNGNiMjkpOwogICAgICAgIAoKICAgICAgICBwb2x5X2xpbmVfMmFmODRmZDllNjdkNDFmMzk0OGY5ODZiYjg3YTAxMTcuYmluZFBvcHVwKHBvcHVwXzFmYTMyNjk0NjM1YjRmNTQ4NjcyMTI2NjQyNjdhOTNmKQogICAgICAgIDsKCiAgICAgICAgCiAgICAKICAgIAogICAgICAgICAgICB2YXIgZmVhdHVyZV9ncm91cF8wZDE4NTk1ZGUyMTE0ZWU0YmFkZTQ5NWFlNGYwMDk4MSA9IEwuZmVhdHVyZUdyb3VwKAogICAgICAgICAgICAgICAge30KICAgICAgICAgICAgKS5hZGRUbyhtYXBfMzY4YTg3OWQ5MzdlNDU2NmEyZTVhNjU2MTEyZjlkYjEpOwogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb2x5X2xpbmVfMjc0ZGRkOWYzNjZhNDFkNjg4NTYyZDQ2ODQ4ZmQzNTcgPSBMLnBvbHlsaW5lKAogICAgICAgICAgICAgICAgW1s0My4yNDg1NDYxNDMxNDk2LCAtMi45Mjk5NTQwODkzOTcxODE2XSwgWzQzLjI0OTM2ODA4OTY3MzcxNiwgLTIuOTMxNTUzMzg2MTA2OTg1Nl0sIFs0My4yNTA2MzEwNzYyNTY1MDQsIC0yLjkzMzY3NjU2NjM2MTI3Ml0sIFs0My4yNTE0NzU5NzYwMjE4MiwgLTIuOTM1NzM3MDA4NTcwMTA4N10sIFs0My4yNTMxMjk4MjQ3NDAzOSwgLTIuOTM1NDg0NDY2MTI2ODk0Nl0sIFs0My4yNTQ1NzQxOTQzMTcxMTUsIC0yLjkzNDU3NjQzMzcwNjc0MV0sIFs0My4yNTQ4Nzc5NDM1OTI0OSwgLTIuOTMzNDAzOTgzNjE1NTc1NF0sIFs0My4yNTYzNDM4Mjg1NTk3OSwgLTIuOTMzMjE1MTcyNTM4NzkzXSwgWzQzLjI1NzkxNDYyMTY1NTc4LCAtMi45MzI4MjIyNjIyODgwOTFdLCBbNDMuMjYwNjM2NjAyNTQ3ODIsIC0yLjkyNzk5ODcyMDYxNjc2XSwgWzQzLjI1OTU2MjQ2MzcxOTE1LCAtMi45MjQwMzc4ODExOTgwMTAzXSwgWzQzLjI1NzA5MDM0MjUzMzA3NSwgLTIuOTI3MTI5Mjk1MDc3OTIzN10sIFs0My4yNTQ3NzMwNzc3NTE1MiwgLTIuOTI2NzQzODk0MzQzMDc0NF0sIFs0My4yNTQwODg0Nzk0MjQxMDUsIC0yLjkyNTA4MDM2ODg0MDg3MDZdLCBbNDMuMjU1MDI5MjYyODI1NzQ0LCAtMi45MjI1NTc3MjQ2MTc3MjZdXSwKICAgICAgICAgICAgICAgIHsiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsICJjb2xvciI6ICIjZmM4ZDYyIiwgImRhc2hBcnJheSI6IG51bGwsICJkYXNoT2Zmc2V0IjogbnVsbCwgImZpbGwiOiBmYWxzZSwgImZpbGxDb2xvciI6ICIjZmM4ZDYyIiwgImZpbGxPcGFjaXR5IjogMC4yLCAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsICJsaW5lQ2FwIjogInJvdW5kIiwgImxpbmVKb2luIjogInJvdW5kIiwgIm5vQ2xpcCI6IGZhbHNlLCAib3BhY2l0eSI6IDEuMCwgInNtb290aEZhY3RvciI6IDEuMCwgInN0cm9rZSI6IHRydWUsICJ3ZWlnaHQiOiAzfQogICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMGQxODU5NWRlMjExNGVlNGJhZGU0OTVhZTRmMDA5ODEpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIHBvcHVwXzRmMmJiOWY5ZTljOTRmMmI4MjNiODc0MDQ4MjNlNmQzID0gTC5wb3B1cCh7Im1heFdpZHRoIjogIjEwMCUifSk7CgogICAgICAgIAogICAgICAgICAgICB2YXIgaHRtbF84Nzc1YjRkNjZlYzM0Yjg1YTc3ODlkOTU4ZTJiNDUwZiA9ICQoYDxkaXYgaWQ9Imh0bWxfODc3NWI0ZDY2ZWMzNGI4NWE3Nzg5ZDk1OGUyYjQ1MGYiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPjx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIHRhYmxlLWhvdmVyIj48dHI+PHRoPmRpcmVjdGlvbl9pZDwvdGg+PHRkPjwvdGQ+PC90cj48dHI+PHRoPnJvdXRlX2lkPC90aD48dGQ+MjMzPC90ZD48L3RyPjx0cj48dGg+c2VydmljZV9pZDwvdGg+PHRkPjE8L3RkPjwvdHI+PHRyPjx0aD5zaGFwZV9pZDwvdGg+PHRkPnNoYXBlXzA4MDwvdGQ+PC90cj48dHI+PHRoPnRyaXBfaGVhZHNpZ248L3RoPjx0ZD4gQXR4dXJpPC90ZD48L3RyPjx0cj48dGg+dHJpcF9pZDwvdGg+PHRkPjQwNjYyODwvdGQ+PC90cj48L3RhYmxlPjwvZGl2PmApWzBdOwogICAgICAgICAgICBwb3B1cF80ZjJiYjlmOWU5Yzk0ZjJiODIzYjg3NDA0ODIzZTZkMy5zZXRDb250ZW50KGh0bWxfODc3NWI0ZDY2ZWMzNGI4NWE3Nzg5ZDk1OGUyYjQ1MGYpOwogICAgICAgIAoKICAgICAgICBwb2x5X2xpbmVfMjc0ZGRkOWYzNjZhNDFkNjg4NTYyZDQ2ODQ4ZmQzNTcuYmluZFBvcHVwKHBvcHVwXzRmMmJiOWY5ZTljOTRmMmI4MjNiODc0MDQ4MjNlNmQzKQogICAgICAgIDsKCiAgICAgICAgCiAgICAKICAgIAogICAgICAgICAgICB2YXIgZmVhdHVyZV9ncm91cF9jNTM0ZDJkYmJiNTk0MzkxYmI3ZTAzM2E1YjYwNGJiMiA9IEwuZmVhdHVyZUdyb3VwKAogICAgICAgICAgICAgICAge30KICAgICAgICAgICAgKS5hZGRUbyhtYXBfMzY4YTg3OWQ5MzdlNDU2NmEyZTVhNjU2MTEyZjlkYjEpOwogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb2x5X2xpbmVfOTNkYmUxOWMwODlhNGM5NWI3YTcxODk0OWRhNjcxMDMgPSBMLnBvbHlsaW5lKAogICAgICAgICAgICAgICAgW1s0My4yNTUwMjkyNjI4MjU3NDQsIC0yLjkyMjU1NzcyNDYxNzcyNl0sIFs0My4yNTY1OTYzMTQ4MTMzODYsIC0yLjkyNTcwNzkwNDcwOTQ1NDVdLCBbNDMuMjU5Nzk1ODMzMTIzMjksIC0yLjkyNDA4NzI3OTMxMzk0OV0sIFs0My4yNjA4NDkxNDE1NjY4LCAtMi45Mjc5MTY4MjUzNDAzMjE2XSwgWzQzLjI1Njg0MDYzMDYzNTE0NiwgLTIuOTM0OTg0NzE1ODQ3NzU4NF0sIFs0My4yNTQ5MDUwODc2NzU1MywgLTIuOTM2Mjg1MTcyOTY2NzcyXSwgWzQzLjI1MzI3MzI0NTQ3MDI0LCAtMi45Mzc1NTc0MzU4ODcwMTYyXSwgWzQzLjI1MjAxNjEyODQ1NTg2LCAtMi45Mzc2MTY0NjAyODY1OTRdLCBbNDMuMjUwODE0NDg1NDM1OTYsIC0yLjkzNTc0NjM2NTE1MTA4OF0sIFs0My4yNDk2Mzk4OTk4MjIwNywgLTIuOTMzNzYxODU0NzQ5MTc5XSwgWzQzLjI0ODMwNDM3NTc3NDYxNiwgLTIuOTMzMjA1Nzc1MDM0NDUzNl0sIFs0My4yNDc2NjAyNDU2NTU4NDQsIC0yLjkzMTYxOTEzMzExNTE1N10sIFs0My4yNDY4OTA4ODgzNzI3NzUsIC0yLjkyOTc1NDUxMzkxNzgzODVdLCBbNDMuMjQ4NTQ2MTQzMTQ5NiwgLTIuOTI5OTU0MDg5Mzk3MTgxNl1dLAogICAgICAgICAgICAgICAgeyJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwgImNvbG9yIjogIiM4ZGEwY2IiLCAiZGFzaEFycmF5IjogbnVsbCwgImRhc2hPZmZzZXQiOiBudWxsLCAiZmlsbCI6IGZhbHNlLCAiZmlsbENvbG9yIjogIiM4ZGEwY2IiLCAiZmlsbE9wYWNpdHkiOiAwLjIsICJmaWxsUnVsZSI6ICJldmVub2RkIiwgImxpbmVDYXAiOiAicm91bmQiLCAibGluZUpvaW4iOiAicm91bmQiLCAibm9DbGlwIjogZmFsc2UsICJvcGFjaXR5IjogMS4wLCAic21vb3RoRmFjdG9yIjogMS4wLCAic3Ryb2tlIjogdHJ1ZSwgIndlaWdodCI6IDN9CiAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9jNTM0ZDJkYmJiNTk0MzkxYmI3ZTAzM2E1YjYwNGJiMik7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgcG9wdXBfNGNmMzBiYTU3ZGJiNDhjOWJkMmM0ODA5MDhkYTM5ZDIgPSBMLnBvcHVwKHsibWF4V2lkdGgiOiAiMTAwJSJ9KTsKCiAgICAgICAgCiAgICAgICAgICAgIHZhciBodG1sX2NmYjdlMDdiYjcyOTQzOGU4ODg5ZGFlOTdhMjViYjc3ID0gJChgPGRpdiBpZD0iaHRtbF9jZmI3ZTA3YmI3Mjk0MzhlODg4OWRhZTk3YTI1YmI3NyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+PHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQgdGFibGUtaG92ZXIiPjx0cj48dGg+ZGlyZWN0aW9uX2lkPC90aD48dGQ+PC90ZD48L3RyPjx0cj48dGg+cm91dGVfaWQ8L3RoPjx0ZD4yMzQ8L3RkPjwvdHI+PHRyPjx0aD5zZXJ2aWNlX2lkPC90aD48dGQ+MTwvdGQ+PC90cj48dHI+PHRoPnNoYXBlX2lkPC90aD48dGQ+c2hhcGVfMDM1PC90ZD48L3RyPjx0cj48dGg+dHJpcF9oZWFkc2lnbjwvdGg+PHRkPiBBdHh1cmk8L3RkPjwvdHI+PHRyPjx0aD50cmlwX2lkPC90aD48dGQ+NDA2ODE1PC90ZD48L3RyPjwvdGFibGU+PC9kaXY+YClbMF07CiAgICAgICAgICAgIHBvcHVwXzRjZjMwYmE1N2RiYjQ4YzliZDJjNDgwOTA4ZGEzOWQyLnNldENvbnRlbnQoaHRtbF9jZmI3ZTA3YmI3Mjk0MzhlODg4OWRhZTk3YTI1YmI3Nyk7CiAgICAgICAgCgogICAgICAgIHBvbHlfbGluZV85M2RiZTE5YzA4OWE0Yzk1YjdhNzE4OTQ5ZGE2NzEwMy5iaW5kUG9wdXAocG9wdXBfNGNmMzBiYTU3ZGJiNDhjOWJkMmM0ODA5MDhkYTM5ZDIpCiAgICAgICAgOwoKICAgICAgICAKICAgIAogICAgCiAgICAgICAgICAgIHZhciBmZWF0dXJlX2dyb3VwXzZiZDA4ZDgyNTJhOTQ2ZDU5YjZkNjVlNTgxYzliYjlkID0gTC5mZWF0dXJlR3JvdXAoCiAgICAgICAgICAgICAgICB7fQogICAgICAgICAgICApLmFkZFRvKG1hcF8zNjhhODc5ZDkzN2U0NTY2YTJlNWE2NTYxMTJmOWRiMSk7CiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvbHlfbGluZV81ODA0NzA5MjFmZmE0N2NhOTEzZWVmNTM1YTZhODljZCA9IEwucG9seWxpbmUoCiAgICAgICAgICAgICAgICBbWzQzLjI0NjQ0MTg1NDgyMTg5LCAtMi45NDIwNzMyNDA1MDk5MTk3XSwgWzQzLjI0OTQxNjk3ODAxODQ5NSwgLTIuOTQ2NjExNjQzNDEyNjkwNl0sIFs0My4yNTIyNTY2NDM2ODY3NiwgLTIuOTQ2MTgzMzMxODg1Nzg5XSwgWzQzLjI1MTQ1NDQ1MDM5MjAyNSwgLTIuOTQzNDY1MTc3ODk3OTI2XSwgWzQzLjI1MDg1NTQ1MzU1NDYxNCwgLTIuOTQyMTczMzI0NDMzNTk1NV0sIFs0My4yNDg5MDg5OTA3MDMxNCwgLTIuOTM5OTIyNjcyMDMzMjkyM10sIFs0My4yNDU2MzY3OTM1MTUwMywgLTIuOTM3MTQwOTA5NTg2MDQxXSwgWzQzLjI0NDg4NTk0NzM1ODQ5LCAtMi45MzM1MjI4MTE0NjU2OTM3XSwgWzQzLjI0Njk0ODQ5MzU1NDc3NSwgLTIuOTMyNDI4MjY1MTc2NzAzNV0sIFs0My4yNDg0OTc5NzYzNDAwNTUsIC0yLjkzMzEzNTc2NTM4NjU4OTNdLCBbNDMuMjUwNjMxMDc2MjU2NTA0LCAtMi45MzM2NzY1NjYzNjEyNzJdLCBbNDMuMjUyNjkzNjc5NjEyNjgsIC0yLjkzNDI4NTc0MjE1MDg3OTVdLCBbNDMuMjU0ODc3OTQzNTkyNDksIC0yLjkzMzQwMzk4MzYxNTU3NTRdLCBbNDMuMjU2MzQzODI4NTU5NzksIC0yLjkzMzIxNTE3MjUzODc5M10sIFs0My4yNTc3MTI4MzIyNzY2MywgLTIuOTM1MDUwMDk2NTk0Mjk0N10sIFs0My4yNTkxMTg4MTYwNzkyOCwgLTIuOTM3NTA2NDIyNjk1MzgxM10sIFs0My4yNjE1OTE0MzkwNDA0MiwgLTIuOTQwMDMyNDUwMTkwNzU2XSwgWzQzLjI2MzYxNTE0NjM1MzI3NCwgLTIuOTM5MTg3MzcxODk2MTk5XSwgWzQzLjI2MzM0ODAxMTU0Mjc0LCAtMi45MzY4NjkyNzEwMzAyNjM3XSwgWzQzLjI2MjMyNTEyNzQwNzQsIC0yLjkzNDU5OTY4OTE5OTYyMjddXSwKICAgICAgICAgICAgICAgIHsiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsICJjb2xvciI6ICIjZTc4YWMzIiwgImRhc2hBcnJheSI6IG51bGwsICJkYXNoT2Zmc2V0IjogbnVsbCwgImZpbGwiOiBmYWxzZSwgImZpbGxDb2xvciI6ICIjZTc4YWMzIiwgImZpbGxPcGFjaXR5IjogMC4yLCAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsICJsaW5lQ2FwIjogInJvdW5kIiwgImxpbmVKb2luIjogInJvdW5kIiwgIm5vQ2xpcCI6IGZhbHNlLCAib3BhY2l0eSI6IDEuMCwgInNtb290aEZhY3RvciI6IDEuMCwgInN0cm9rZSI6IHRydWUsICJ3ZWlnaHQiOiAzfQogICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfNmJkMDhkODI1MmE5NDZkNTliNmQ2NWU1ODFjOWJiOWQpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIHBvcHVwXzc0ZTRhYjM3YTFiMjRjMDViMTgyODdlMzUzZTg0YmE2ID0gTC5wb3B1cCh7Im1heFdpZHRoIjogIjEwMCUifSk7CgogICAgICAgIAogICAgICAgICAgICB2YXIgaHRtbF8zYWEzYjA1MWJmYTY0ODMzODA1NzYzMjllZjI2NzNlMSA9ICQoYDxkaXYgaWQ9Imh0bWxfM2FhM2IwNTFiZmE2NDgzMzgwNTc2MzI5ZWYyNjczZTEiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPjx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIHRhYmxlLWhvdmVyIj48dHI+PHRoPmRpcmVjdGlvbl9pZDwvdGg+PHRkPjwvdGQ+PC90cj48dHI+PHRoPnJvdXRlX2lkPC90aD48dGQ+MjM1PC90ZD48L3RyPjx0cj48dGg+c2VydmljZV9pZDwvdGg+PHRkPjE8L3RkPjwvdHI+PHRyPjx0aD5zaGFwZV9pZDwvdGg+PHRkPnNoYXBlXzEwNTwvdGQ+PC90cj48dHI+PHRoPnRyaXBfaGVhZHNpZ248L3RoPjx0ZD4gTW95dWE8L3RkPjwvdHI+PHRyPjx0aD50cmlwX2lkPC90aD48dGQ+NDA5OTc2PC90ZD48L3RyPjwvdGFibGU+PC9kaXY+YClbMF07CiAgICAgICAgICAgIHBvcHVwXzc0ZTRhYjM3YTFiMjRjMDViMTgyODdlMzUzZTg0YmE2LnNldENvbnRlbnQoaHRtbF8zYWEzYjA1MWJmYTY0ODMzODA1NzYzMjllZjI2NzNlMSk7CiAgICAgICAgCgogICAgICAgIHBvbHlfbGluZV81ODA0NzA5MjFmZmE0N2NhOTEzZWVmNTM1YTZhODljZC5iaW5kUG9wdXAocG9wdXBfNzRlNGFiMzdhMWIyNGMwNWIxODI4N2UzNTNlODRiYTYpCiAgICAgICAgOwoKICAgICAgICAKICAgIAogICAgCiAgICAgICAgICAgIHZhciBmZWF0dXJlX2dyb3VwX2ViMDdiNzFmYWVkYjQxYzFiMzYwMzBjODhjOTMwMGEyID0gTC5mZWF0dXJlR3JvdXAoCiAgICAgICAgICAgICAgICB7fQogICAgICAgICAgICApLmFkZFRvKG1hcF8zNjhhODc5ZDkzN2U0NTY2YTJlNWE2NTYxMTJmOWRiMSk7CiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvbHlfbGluZV9jY2MwODIxNTk4NTM0OTFhOGRkZTQ2Y2NiYmJjNDJjNiA9IEwucG9seWxpbmUoCiAgICAgICAgICAgICAgICBbWzQzLjI2MjMyNTEyNzQwNzQsIC0yLjkzNDU5OTY4OTE5OTYyMjddLCBbNDMuMjU4MTgyOTYwNTUwMzY0LCAtMi45MzUzNDc3NDg2NDMyOTk1XSwgWzQzLjI1Njg0MDYzMDYzNTE0NiwgLTIuOTM0OTg0NzE1ODQ3NzU4NF0sIFs0My4yNTQ5MDUwODc2NzU1MywgLTIuOTM2Mjg1MTcyOTY2NzcyXSwgWzQzLjI1MzI3MzI0NTQ3MDI0LCAtMi45Mzc1NTc0MzU4ODcwMTYyXSwgWzQzLjI1MjAxNjEyODQ1NTg2LCAtMi45Mzc2MTY0NjAyODY1OTRdLCBbNDMuMjUwODE0NDg1NDM1OTYsIC0yLjkzNTc0NjM2NTE1MTA4OF0sIFs0My4yNDk2Mzk4OTk4MjIwNywgLTIuOTMzNzYxODU0NzQ5MTc5XSwgWzQzLjI0ODMwNDM3NTc3NDYxNiwgLTIuOTMzMjA1Nzc1MDM0NDUzNl0sIFs0My4yNDY5Mjc0ODg0MDA2MiwgLTIuOTMyNTQyMDM1MDA2NjUwN10sIFs0My4yNDQ5MjgxNzg3ODI1NiwgLTIuOTMzNzQzMjE1MjIwMDYxXSwgWzQzLjI0NTkyNzAwMDIyMTE0LCAtMi45MzgwNzcwODcwNzI0MDY0XSwgWzQzLjI0ODkzODgzMzI0NjM1NiwgLTIuOTM5ODMxNDYxNTI4OTAxNl0sIFs0My4yNTA5NDU2NzM5MDQ2NzQsIC0yLjk0MjE1OTIzMDk0Mjg1OTJdLCBbNDMuMjUxNzkxNjQ4MTgxMzc0LCAtMi45NDQwMDgwMjI5NTQzMjJdLCBbNDMuMjUyNDY2MzE1NDc5NjIsIC0yLjk0NjI0NzYwMjUzOTgwMV0sIFs0My4yNDk0MjM0MTk3ODQ2MSwgLTIuOTQ2OTg2NzY0NzgyNzA3N10sIFs0My4yNDY2ODQyNDc1OTAwNzUsIC0yLjk0MTY0NzM3OTM3NzAzM10sIFs0My4yNDY0NDE4NTQ4MjE4OSwgLTIuOTQyMDczMjQwNTA5OTE5N11dLAogICAgICAgICAgICAgICAgeyJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwgImNvbG9yIjogIiNhNmQ4NTQiLCAiZGFzaEFycmF5IjogbnVsbCwgImRhc2hPZmZzZXQiOiBudWxsLCAiZmlsbCI6IGZhbHNlLCAiZmlsbENvbG9yIjogIiNhNmQ4NTQiLCAiZmlsbE9wYWNpdHkiOiAwLjIsICJmaWxsUnVsZSI6ICJldmVub2RkIiwgImxpbmVDYXAiOiAicm91bmQiLCAibGluZUpvaW4iOiAicm91bmQiLCAibm9DbGlwIjogZmFsc2UsICJvcGFjaXR5IjogMS4wLCAic21vb3RoRmFjdG9yIjogMS4wLCAic3Ryb2tlIjogdHJ1ZSwgIndlaWdodCI6IDN9CiAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9lYjA3YjcxZmFlZGI0MWMxYjM2MDMwYzg4YzkzMDBhMik7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgcG9wdXBfMmJlMDJkN2EyOWQ2NGE0NmE2ZmRkM2FjMzQ2NTdmNjUgPSBMLnBvcHVwKHsibWF4V2lkdGgiOiAiMTAwJSJ9KTsKCiAgICAgICAgCiAgICAgICAgICAgIHZhciBodG1sXzRkZjM4MDM5NTVlYTQzY2ZiYmE5NzRiYjAxMzBjNTU5ID0gJChgPGRpdiBpZD0iaHRtbF80ZGYzODAzOTU1ZWE0M2NmYmJhOTc0YmIwMTMwYzU1OSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+PHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQgdGFibGUtaG92ZXIiPjx0cj48dGg+ZGlyZWN0aW9uX2lkPC90aD48dGQ+PC90ZD48L3RyPjx0cj48dGg+cm91dGVfaWQ8L3RoPjx0ZD4yMzY8L3RkPjwvdHI+PHRyPjx0aD5zZXJ2aWNlX2lkPC90aD48dGQ+MTwvdGQ+PC90cj48dHI+PHRoPnNoYXBlX2lkPC90aD48dGQ+c2hhcGVfMDgyPC90ZD48L3RyPjx0cj48dGg+dHJpcF9oZWFkc2lnbjwvdGg+PHRkPiBNb3l1YTwvdGQ+PC90cj48dHI+PHRoPnRyaXBfaWQ8L3RoPjx0ZD40MTAxMDA8L3RkPjwvdHI+PC90YWJsZT48L2Rpdj5gKVswXTsKICAgICAgICAgICAgcG9wdXBfMmJlMDJkN2EyOWQ2NGE0NmE2ZmRkM2FjMzQ2NTdmNjUuc2V0Q29udGVudChodG1sXzRkZjM4MDM5NTVlYTQzY2ZiYmE5NzRiYjAxMzBjNTU5KTsKICAgICAgICAKCiAgICAgICAgcG9seV9saW5lX2NjYzA4MjE1OTg1MzQ5MWE4ZGRlNDZjY2JiYmM0MmM2LmJpbmRQb3B1cChwb3B1cF8yYmUwMmQ3YTI5ZDY0YTQ2YTZmZGQzYWMzNDY1N2Y2NSkKICAgICAgICA7CgogICAgICAgIAogICAgCiAgICAKICAgICAgICAgICAgdmFyIGZlYXR1cmVfZ3JvdXBfM2U2MDdmOTU5MWRmNGJkZDg5MDk2MjMxYzdlN2I5MjcgPSBMLmZlYXR1cmVHcm91cCgKICAgICAgICAgICAgICAgIHt9CiAgICAgICAgICAgICkuYWRkVG8obWFwXzM2OGE4NzlkOTM3ZTQ1NjZhMmU1YTY1NjExMmY5ZGIxKTsKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9seV9saW5lX2UyODE4ZjZjZDM3NDQ0MzM5NjY3YzY3NDQxNzFlMTEwID0gTC5wb2x5bGluZSgKICAgICAgICAgICAgICAgIFtbNDMuMjM4NzY3OTkyNDEzNTMsIC0yLjk0ODQ3ODQwOTUwNjI2OF0sIFs0My4yNDA0NTg5MDMzNTkxLCAtMi45NDk2NTQwODkyNDc5NzM3XSwgWzQzLjI0MzE5OTYyMTcwMTM2NSwgLTIuOTQ5MDg0OTEwOTgyODgwM10sIFs0My4yNDY5MzEyMDM2MTUxNiwgLTIuOTQ4MjYzOTE5NDc0MjA0Nl0sIFs0My4yNDk0MTY5NzgwMTg0OTUsIC0yLjk0NjYxMTY0MzQxMjY5MDZdLCBbNDMuMjUyMjU2NjQzNjg2NzYsIC0yLjk0NjE4MzMzMTg4NTc4OV0sIFs0My4yNTQzMzA4MzAzMzc0LCAtMi45NDQ1OTQzOTk5NDE3NTgzXSwgWzQzLjI1NjY0NzMxNTYwMTU1LCAtMi45NDIyNjUxMjIzMjEyNzA0XSwgWzQzLjI1ODYwMzg1ODAyOTAzLCAtMi45NDEyNTIxNjIxMDMxNDU2XSwgWzQzLjI2MTU5MTQzOTA0MDQyLCAtMi45NDAwMzI0NTAxOTA3NTZdLCBbNDMuMjYzNjE1MTQ2MzUzMjc0LCAtMi45MzkxODczNzE4OTYxOTldLCBbNDMuMjYzMzQ4MDExNTQyNzQsIC0yLjkzNjg2OTI3MTAzMDI2MzddLCBbNDMuMjYyNjkwNzYxOTc3MDMsIC0yLjkzMzc1MDk5NjQzMTU1OV0sIFs0My4yNjE1Mjk5NDY0MDAxNzQsIC0yLjkyODQ3NjU4MDg4NDY1MTNdLCBbNDMuMjU5NTYyNDYzNzE5MTUsIC0yLjkyNDAzNzg4MTE5ODAxMDNdLCBbNDMuMjU3MDkwMzQyNTMzMDc1LCAtMi45MjcxMjkyOTUwNzc5MjM3XSwgWzQzLjI1NDA4ODQ3OTQyNDEwNSwgLTIuOTI1MDgwMzY4ODQwODcwNl0sIFs0My4yNTQ3NzMwNzc3NTE1MiwgLTIuOTI2NzQzODk0MzQzMDc0NF0sIFs0My4yNTQ5Nzk5NDU5NTcyNSwgLTIuOTIyMDk5Nzg5OTA0NjE5XSwgWzQzLjI1MzU3MTEwNzQzMDMyNSwgLTIuOTIxMzQ4MjQ4NzMzOTczXSwgWzQzLjI1MTQ1ODA4NDk1MjE1NSwgLTIuOTIxNDQ0NTc1MDY4NjU1XSwgWzQzLjI0OTk5NDUzNzIwNTIyLCAtMi45MTY4NTAzODA0MDc5NzhdLCBbNDMuMjQ5OTkyMDY1NTEzNjMsIC0yLjkxNzQ3ODI1NzE1NzA2ODVdXSwKICAgICAgICAgICAgICAgIHsiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsICJjb2xvciI6ICIjZmZkOTJmIiwgImRhc2hBcnJheSI6IG51bGwsICJkYXNoT2Zmc2V0IjogbnVsbCwgImZpbGwiOiBmYWxzZSwgImZpbGxDb2xvciI6ICIjZmZkOTJmIiwgImZpbGxPcGFjaXR5IjogMC4yLCAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsICJsaW5lQ2FwIjogInJvdW5kIiwgImxpbmVKb2luIjogInJvdW5kIiwgIm5vQ2xpcCI6IGZhbHNlLCAib3BhY2l0eSI6IDEuMCwgInNtb290aEZhY3RvciI6IDEuMCwgInN0cm9rZSI6IHRydWUsICJ3ZWlnaHQiOiAzfQogICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfM2U2MDdmOTU5MWRmNGJkZDg5MDk2MjMxYzdlN2I5MjcpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIHBvcHVwX2U2ZDgxNDcxOTE1MTRkY2NiODJkOWRjOTk4ZTAxZDdmID0gTC5wb3B1cCh7Im1heFdpZHRoIjogIjEwMCUifSk7CgogICAgICAgIAogICAgICAgICAgICB2YXIgaHRtbF9mZjEyYTc0ZTUyYjc0ZmQ2ODcwZDdmY2EyN2M1MDUxNiA9ICQoYDxkaXYgaWQ9Imh0bWxfZmYxMmE3NGU1MmI3NGZkNjg3MGQ3ZmNhMjdjNTA1MTYiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPjx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIHRhYmxlLWhvdmVyIj48dHI+PHRoPmRpcmVjdGlvbl9pZDwvdGg+PHRkPjwvdGQ+PC90cj48dHI+PHRoPnJvdXRlX2lkPC90aD48dGQ+MjM3PC90ZD48L3RyPjx0cj48dGg+c2VydmljZV9pZDwvdGg+PHRkPjE8L3RkPjwvdHI+PHRyPjx0aD5zaGFwZV9pZDwvdGg+PHRkPnNoYXBlXzExMjwvdGQ+PC90cj48dHI+PHRoPnRyaXBfaGVhZHNpZ248L3RoPjx0ZD4gTWluYSBEZWwgTW9ycm88L3RkPjwvdHI+PHRyPjx0aD50cmlwX2lkPC90aD48dGQ+NDExMjI2PC90ZD48L3RyPjwvdGFibGU+PC9kaXY+YClbMF07CiAgICAgICAgICAgIHBvcHVwX2U2ZDgxNDcxOTE1MTRkY2NiODJkOWRjOTk4ZTAxZDdmLnNldENvbnRlbnQoaHRtbF9mZjEyYTc0ZTUyYjc0ZmQ2ODcwZDdmY2EyN2M1MDUxNik7CiAgICAgICAgCgogICAgICAgIHBvbHlfbGluZV9lMjgxOGY2Y2QzNzQ0NDMzOTY2N2M2NzQ0MTcxZTExMC5iaW5kUG9wdXAocG9wdXBfZTZkODE0NzE5MTUxNGRjY2I4MmQ5ZGM5OThlMDFkN2YpCiAgICAgICAgOwoKICAgICAgICAKICAgIAogICAgCiAgICAgICAgICAgIHZhciBmZWF0dXJlX2dyb3VwXzQwYTVhMTA2NjYwYzQzOTA5MTkxOWRhMjFlYzQ0ZTZhID0gTC5mZWF0dXJlR3JvdXAoCiAgICAgICAgICAgICAgICB7fQogICAgICAgICAgICApLmFkZFRvKG1hcF8zNjhhODc5ZDkzN2U0NTY2YTJlNWE2NTYxMTJmOWRiMSk7CiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvbHlfbGluZV8wNDg2MjE3ZTc1M2I0ZWMyYTk1ZjE0MTZmYmUyOWJkYyA9IEwucG9seWxpbmUoCiAgICAgICAgICAgICAgICBbWzQzLjI0OTk5MjA2NTUxMzYzLCAtMi45MTc0NzgyNTcxNTcwNjg1XSwgWzQzLjI0ODg4NDQ3MzA0OTY4LCAtMi45MTkzMzcwMzQ0OTM1MDk1XSwgWzQzLjI1MTUzMTM3NTI3NjEsIC0yLjkyMTQxNDQ0NTI1MTUwNjddLCBbNDMuMjUzNTk2NDczNjg4NDc1LCAtMi45MjEyNzQwODAxNDE1MjkzXSwgWzQzLjI1NTAzMDY1MjEyODcsIC0yLjkyMjAwMTcxOTEzMTA3NjhdLCBbNDMuMjU2NTk2MzE0ODEzMzg2LCAtMi45MjU3MDc5MDQ3MDk0NTQ1XSwgWzQzLjI1OTc5NTgzMzEyMzI5LCAtMi45MjQwODcyNzkzMTM5NDldLCBbNDMuMjYxNzMyNTg4MjYxMjgsIC0yLjkyODk2NzA0MTM4NTY0ODNdLCBbNDMuMjYyNzA5ODY3MzkwOTcsIC0yLjkzMzQ1NzIzODcwMjE1NzRdLCBbNDMuMjYzMjg5NzI1MzM5NTUsIC0yLjkzNTk4NzI3NDM0NzM4MzRdLCBbNDMuMjYzNjQ0NjIyMzk5NTQ2LCAtMi45MzkyODYyNDU4MTI0MTA1XSwgWzQzLjI2MTE3MTIxMjU0MzEzLCAtMi45NDAyNzE5NzM5ODg0ODY0XSwgWzQzLjI1ODM1ODk1MTY3NjA0NCwgLTIuOTQxNDExMzc4Nzc1NjMxN10sIFs0My4yNTcyNzU0MTUxMjQ2OCwgLTIuOTQxNzI4OTUzNjU4ODg1XSwgWzQzLjI1NDM2NDAxMjk1OTA1LCAtMi45NDQ3MTg1MDE1ODgxMTE0XSwgWzQzLjI1MjQ2NjMxNTQ3OTYyLCAtMi45NDYyNDc2MDI1Mzk4MDFdLCBbNDMuMjQ5NDIzNDE5Nzg0NjEsIC0yLjk0Njk4Njc2NDc4MjcwNzddLCBbNDMuMjQ1ODI1ODcxNTc5NDIsIC0yLjk0ODY5MjY4MzUwODg2NF0sIFs0My4yNDM0MzQ1NjUwOTQ5MiwgLTIuOTQ5MDcwNzc2NjkwNDY0XSwgWzQzLjI0MDExNDcwNTUyMzk5LCAtMi45NDk3MzMwNzcwNTQ3OTVdLCBbNDMuMjM4NzY3OTkyNDEzNTMsIC0yLjk0ODQ3ODQwOTUwNjI2OF1dLAogICAgICAgICAgICAgICAgeyJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwgImNvbG9yIjogIiNlNWM0OTQiLCAiZGFzaEFycmF5IjogbnVsbCwgImRhc2hPZmZzZXQiOiBudWxsLCAiZmlsbCI6IGZhbHNlLCAiZmlsbENvbG9yIjogIiNlNWM0OTQiLCAiZmlsbE9wYWNpdHkiOiAwLjIsICJmaWxsUnVsZSI6ICJldmVub2RkIiwgImxpbmVDYXAiOiAicm91bmQiLCAibGluZUpvaW4iOiAicm91bmQiLCAibm9DbGlwIjogZmFsc2UsICJvcGFjaXR5IjogMS4wLCAic21vb3RoRmFjdG9yIjogMS4wLCAic3Ryb2tlIjogdHJ1ZSwgIndlaWdodCI6IDN9CiAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF80MGE1YTEwNjY2MGM0MzkwOTE5MTlkYTIxZWM0NGU2YSk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgcG9wdXBfNzQ5MWM4ZTg2NGM4NGM0MzhkYjZlNGRkMjMwOWYyNTMgPSBMLnBvcHVwKHsibWF4V2lkdGgiOiAiMTAwJSJ9KTsKCiAgICAgICAgCiAgICAgICAgICAgIHZhciBodG1sX2UxM2Y4MWI4M2Y1OTQ3NmQ5MGVkZmQxZmM1MzUwMTBhID0gJChgPGRpdiBpZD0iaHRtbF9lMTNmODFiODNmNTk0NzZkOTBlZGZkMWZjNTM1MDEwYSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+PHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQgdGFibGUtaG92ZXIiPjx0cj48dGg+ZGlyZWN0aW9uX2lkPC90aD48dGQ+PC90ZD48L3RyPjx0cj48dGg+cm91dGVfaWQ8L3RoPjx0ZD4yMzg8L3RkPjwvdHI+PHRyPjx0aD5zZXJ2aWNlX2lkPC90aD48dGQ+MTwvdGQ+PC90cj48dHI+PHRoPnNoYXBlX2lkPC90aD48dGQ+c2hhcGVfMDMwPC90ZD48L3RyPjx0cj48dGg+dHJpcF9oZWFkc2lnbjwvdGg+PHRkPiBNaW5hIERlbCBNb3JybzwvdGQ+PC90cj48dHI+PHRoPnRyaXBfaWQ8L3RoPjx0ZD40MTE1MDg8L3RkPjwvdHI+PC90YWJsZT48L2Rpdj5gKVswXTsKICAgICAgICAgICAgcG9wdXBfNzQ5MWM4ZTg2NGM4NGM0MzhkYjZlNGRkMjMwOWYyNTMuc2V0Q29udGVudChodG1sX2UxM2Y4MWI4M2Y1OTQ3NmQ5MGVkZmQxZmM1MzUwMTBhKTsKICAgICAgICAKCiAgICAgICAgcG9seV9saW5lXzA0ODYyMTdlNzUzYjRlYzJhOTVmMTQxNmZiZTI5YmRjLmJpbmRQb3B1cChwb3B1cF83NDkxYzhlODY0Yzg0YzQzOGRiNmU0ZGQyMzA5ZjI1MykKICAgICAgICA7CgogICAgICAgIAogICAgCiAgICAKICAgICAgICAgICAgdmFyIGZlYXR1cmVfZ3JvdXBfOGYyNmUwN2I5NzI1NDllMmIzNTBiYTQ5YzNmZjM3ODcgPSBMLmZlYXR1cmVHcm91cCgKICAgICAgICAgICAgICAgIHt9CiAgICAgICAgICAgICkuYWRkVG8obWFwXzM2OGE4NzlkOTM3ZTQ1NjZhMmU1YTY1NjExMmY5ZGIxKTsKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9seV9saW5lX2FiZTk5MDE4OGYyMjQ1MDZiMzhhNGYwNzdkYzQwMTg4ID0gTC5wb2x5bGluZSgKICAgICAgICAgICAgICAgIFtbNDMuMjcxMTIzODg1MzMwMTM0LCAtMi45NzA5OTYyODA2OTUwMTQ4XSwgWzQzLjI3MjE4NzQwMTA0MjI1LCAtMi45NjkyNDE4ODY2NDk1NzI3XSwgWzQzLjI3MzM5OTM0Njk0ODM5NSwgLTIuOTcwNjI4NjkzMTgxMjAzNl0sIFs0My4yNzUwMTc4NzEzMzU0NCwgLTIuOTcyNzE2OTk5ODA4ODMyN10sIFs0My4yNzc0NzA0MTI3NzIzNSwgLTIuOTc0OTQ5Njk0MjU0NzI1M10sIFs0My4yNzY2NDgzMjMyOTQ5MzUsIC0yLjk3MjE2MDU4MTUwNjk4ODVdLCBbNDMuMjY0NzI0NjgwNzU5MDgsIC0yLjk2MTE0OTkwMTQ2NjAyMTZdLCBbNDMuMjYyNTQ3MDkxMDkzMDA1LCAtMi45NTYzMjg5NTM0MTgyNTMzXSwgWzQzLjI1OTQ2MDA0MzMwMDE1LCAtMi45NTIyNjkxOTMzODU4NTM0XSwgWzQzLjI1Nzk0NDg1ODYzODA3LCAtMi45NDkwNTU0Njg2NzYyODkzXSwgWzQzLjI1NzU4NzUzNzcwNDEwNCwgLTIuOTQyNTIzODU4Njc4NDM1XSwgWzQzLjI1NzMzMjI1NDIwNDYsIC0yLjkzNzYxMDU0ODM5NzE1MV0sIFs0My4yNTcyMjI3NDQ5NTI1MSwgLTIuOTM1MzAzNTI2MTcwNDg4XSwgWzQzLjI1NzkxNDYyMTY1NTc4LCAtMi45MzI4MjIyNjIyODgwOTFdLCBbNDMuMjYwNjM2NjAyNTQ3ODIsIC0yLjkyNzk5ODcyMDYxNjc2XSwgWzQzLjI1OTU2MjQ2MzcxOTE1LCAtMi45MjQwMzc4ODExOTgwMTAzXSwgWzQzLjI1NzA5MDM0MjUzMzA3NSwgLTIuOTI3MTI5Mjk1MDc3OTIzN10sIFs0My4yNTQ3NzMwNzc3NTE1MiwgLTIuOTI2NzQzODk0MzQzMDc0NF0sIFs0My4yNTQwODg0Nzk0MjQxMDUsIC0yLjkyNTA4MDM2ODg0MDg3MDZdLCBbNDMuMjU1MDI5MjYyODI1NzQ0LCAtMi45MjI1NTc3MjQ2MTc3MjZdXSwKICAgICAgICAgICAgICAgIHsiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsICJjb2xvciI6ICIjYjNiM2IzIiwgImRhc2hBcnJheSI6IG51bGwsICJkYXNoT2Zmc2V0IjogbnVsbCwgImZpbGwiOiBmYWxzZSwgImZpbGxDb2xvciI6ICIjYjNiM2IzIiwgImZpbGxPcGFjaXR5IjogMC4yLCAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsICJsaW5lQ2FwIjogInJvdW5kIiwgImxpbmVKb2luIjogInJvdW5kIiwgIm5vQ2xpcCI6IGZhbHNlLCAib3BhY2l0eSI6IDEuMCwgInNtb290aEZhY3RvciI6IDEuMCwgInN0cm9rZSI6IHRydWUsICJ3ZWlnaHQiOiAzfQogICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfOGYyNmUwN2I5NzI1NDllMmIzNTBiYTQ5YzNmZjM3ODcpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIHBvcHVwXzJkMmNlNWY0NmY1MzQ1NWI5MTZmMTFmMzQ0YTI1YzVhID0gTC5wb3B1cCh7Im1heFdpZHRoIjogIjEwMCUifSk7CgogICAgICAgIAogICAgICAgICAgICB2YXIgaHRtbF82ZDI5M2UzNmVmYjM0ODUzYjcxMTg5ZDY3NWJlYTUwYSA9ICQoYDxkaXYgaWQ9Imh0bWxfNmQyOTNlMzZlZmIzNDg1M2I3MTE4OWQ2NzViZWE1MGEiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPjx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIHRhYmxlLWhvdmVyIj48dHI+PHRoPmRpcmVjdGlvbl9pZDwvdGg+PHRkPjwvdGQ+PC90cj48dHI+PHRoPnJvdXRlX2lkPC90aD48dGQ+MjM5PC90ZD48L3RyPjx0cj48dGg+c2VydmljZV9pZDwvdGg+PHRkPjE8L3RkPjwvdHI+PHRyPjx0aD5zaGFwZV9pZDwvdGg+PHRkPnNoYXBlXzEyMDwvdGQ+PC90cj48dHI+PHRoPnRyaXBfaGVhZHNpZ248L3RoPjx0ZD4gQXR4dXJpPC90ZD48L3RyPjx0cj48dGg+dHJpcF9pZDwvdGg+PHRkPjQwNzAyNjwvdGQ+PC90cj48L3RhYmxlPjwvZGl2PmApWzBdOwogICAgICAgICAgICBwb3B1cF8yZDJjZTVmNDZmNTM0NTViOTE2ZjExZjM0NGEyNWM1YS5zZXRDb250ZW50KGh0bWxfNmQyOTNlMzZlZmIzNDg1M2I3MTE4OWQ2NzViZWE1MGEpOwogICAgICAgIAoKICAgICAgICBwb2x5X2xpbmVfYWJlOTkwMTg4ZjIyNDUwNmIzOGE0ZjA3N2RjNDAxODguYmluZFBvcHVwKHBvcHVwXzJkMmNlNWY0NmY1MzQ1NWI5MTZmMTFmMzQ0YTI1YzVhKQogICAgICAgIDsKCiAgICAgICAgCiAgICAKICAgIAogICAgICAgICAgICB2YXIgZmVhdHVyZV9ncm91cF9iOTI2NDk1OGU3ZTc0MjVhYjA5ZWM2MmFhZjIwNDY1MiA9IEwuZmVhdHVyZUdyb3VwKAogICAgICAgICAgICAgICAge30KICAgICAgICAgICAgKS5hZGRUbyhtYXBfMzY4YTg3OWQ5MzdlNDU2NmEyZTVhNjU2MTEyZjlkYjEpOwogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb2x5X2xpbmVfZWZlODgxNGU5ODM3NDgzNGI1ODEyNzJlOTMyNTc2MTUgPSBMLnBvbHlsaW5lKAogICAgICAgICAgICAgICAgW1s0My4yNTUwMjkyNjI4MjU3NDQsIC0yLjkyMjU1NzcyNDYxNzcyNl0sIFs0My4yNTY1OTYzMTQ4MTMzODYsIC0yLjkyNTcwNzkwNDcwOTQ1NDVdLCBbNDMuMjU5Nzk1ODMzMTIzMjksIC0yLjkyNDA4NzI3OTMxMzk0OV0sIFs0My4yNjA4NDkxNDE1NjY4LCAtMi45Mjc5MTY4MjUzNDAzMjE2XSwgWzQzLjI1NzM1MDc1MTM4Mzg0NiwgLTIuOTM1MzEzNjYwMDQyNzE1NF0sIFs0My4yNTc0ODIxMjQxMzEyLCAtMi45Mzc4NTkxMTMwNzkyMjVdLCBbNDMuMjU3NzE4NjQwNDQyNCwgLTIuOTQyNzM4MDAyMzI2OTk0NV0sIFs0My4yNTgwMDAxOTI3ODk2LCAtMi45NDkwNTI1MjkxMjk2MjE1XSwgWzQzLjI2MDEwMTE1Njg3ODE4LCAtMi45NTI5NzE0OTM3NTUyMDk0XSwgWzQzLjI2MjgxNjU2MDMwMzI4LCAtMi45NTYzOTk3NTc1MzE2MDU3XSwgWzQzLjI2NDk3MjExNTM1MTY5LCAtMi45NjEyMjEwNzQ2MTMwMjQzXSwgWzQzLjI3NTY4NzE4NjkwODYsIC0yLjk3MTkwMDAxNzM2MjczNzddLCBbNDMuMjczMjA2NTU4OTg2MjgsIC0yLjk3MTU3NjE0OTM0ODIyNF0sIFs0My4yNzE5NjQ5OTcwNjQ5MzQsIC0yLjk2OTQzNjQwNjQ4MDc4NjNdLCBbNDMuMjcxMTIzODg1MzMwMTM0LCAtMi45NzA5OTYyODA2OTUwMTQ4XV0sCiAgICAgICAgICAgICAgICB7ImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLCAiY29sb3IiOiAiIzY2YzJhNSIsICJkYXNoQXJyYXkiOiBudWxsLCAiZGFzaE9mZnNldCI6IG51bGwsICJmaWxsIjogZmFsc2UsICJmaWxsQ29sb3IiOiAiIzY2YzJhNSIsICJmaWxsT3BhY2l0eSI6IDAuMiwgImZpbGxSdWxlIjogImV2ZW5vZGQiLCAibGluZUNhcCI6ICJyb3VuZCIsICJsaW5lSm9pbiI6ICJyb3VuZCIsICJub0NsaXAiOiBmYWxzZSwgIm9wYWNpdHkiOiAxLjAsICJzbW9vdGhGYWN0b3IiOiAxLjAsICJzdHJva2UiOiB0cnVlLCAid2VpZ2h0IjogM30KICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2I5MjY0OTU4ZTdlNzQyNWFiMDllYzYyYWFmMjA0NjUyKTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBwb3B1cF8xNGFjYTExYjU4ZDg0ZTUxOWRjYmI2YTQxOTU5NzU2NSA9IEwucG9wdXAoeyJtYXhXaWR0aCI6ICIxMDAlIn0pOwoKICAgICAgICAKICAgICAgICAgICAgdmFyIGh0bWxfYTAwN2ZmNjM3MTRhNDQyOGFhN2ZlMDNlZTVmOTA4OTAgPSAkKGA8ZGl2IGlkPSJodG1sX2EwMDdmZjYzNzE0YTQ0MjhhYTdmZTAzZWU1ZjkwODkwIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij48dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCB0YWJsZS1ob3ZlciI+PHRyPjx0aD5kaXJlY3Rpb25faWQ8L3RoPjx0ZD48L3RkPjwvdHI+PHRyPjx0aD5yb3V0ZV9pZDwvdGg+PHRkPjI0MDwvdGQ+PC90cj48dHI+PHRoPnNlcnZpY2VfaWQ8L3RoPjx0ZD4xPC90ZD48L3RyPjx0cj48dGg+c2hhcGVfaWQ8L3RoPjx0ZD5zaGFwZV8wMzQ8L3RkPjwvdHI+PHRyPjx0aD50cmlwX2hlYWRzaWduPC90aD48dGQ+IEF0eHVyaTwvdGQ+PC90cj48dHI+PHRoPnRyaXBfaWQ8L3RoPjx0ZD40MDcxMzg8L3RkPjwvdHI+PC90YWJsZT48L2Rpdj5gKVswXTsKICAgICAgICAgICAgcG9wdXBfMTRhY2ExMWI1OGQ4NGU1MTlkY2JiNmE0MTk1OTc1NjUuc2V0Q29udGVudChodG1sX2EwMDdmZjYzNzE0YTQ0MjhhYTdmZTAzZWU1ZjkwODkwKTsKICAgICAgICAKCiAgICAgICAgcG9seV9saW5lX2VmZTg4MTRlOTgzNzQ4MzRiNTgxMjcyZTkzMjU3NjE1LmJpbmRQb3B1cChwb3B1cF8xNGFjYTExYjU4ZDg0ZTUxOWRjYmI2YTQxOTU5NzU2NSkKICAgICAgICA7CgogICAgICAgIAogICAgCiAgICAKICAgICAgICAgICAgdmFyIGZlYXR1cmVfZ3JvdXBfMmEzNDE3ZWM5MTViNDJiNjljZWM0ZTIxODAwNDNiMjYgPSBMLmZlYXR1cmVHcm91cCgKICAgICAgICAgICAgICAgIHt9CiAgICAgICAgICAgICkuYWRkVG8obWFwXzM2OGE4NzlkOTM3ZTQ1NjZhMmU1YTY1NjExMmY5ZGIxKTsKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9seV9saW5lX2M0OGQ0NTEzOWExZTRlMDU4NTFjMDk0NjljYzk1NDYyID0gTC5wb2x5bGluZSgKICAgICAgICAgICAgICAgIFtbNDMuMjU1Njk2OTI3MzM0NTc2LCAtMi45NzM0NDE0NjM2NDgwOTkyXSwgWzQzLjI1NTE0NTY4ODAyMDI4NSwgLTIuOTcxOTM2MjIyOTE1NTUxN10sIFs0My4yNTY5MDQ5NDY5MDc1NCwgLTIuOTcwNTA5NzQ5NDExMDY4Nl0sIFs0My4yNjE0MDAwNTUxMjExODYsIC0yLjk3MTQzMTI0NDMyMDUyMzddLCBbNDMuMjcyMTkwNTUyODk2OTY2LCAtMi45NzQxMTkxMzQ2Mzk5NTQzXSwgWzQzLjI3MzIwNjU1ODk4NjI4LCAtMi45NzE1NzYxNDkzNDgyMjRdLCBbNDMuMjc1MDE3ODcxMzM1NDQsIC0yLjk3MjcxNjk5OTgwODgzMjddLCBbNDMuMjY0NzI0NjgwNzU5MDgsIC0yLjk2MTE0OTkwMTQ2NjAyMTZdLCBbNDMuMjYyNTQ3MDkxMDkzMDA1LCAtMi45NTYzMjg5NTM0MTgyNTMzXSwgWzQzLjI1OTQ2MDA0MzMwMDE1LCAtMi45NTIyNjkxOTMzODU4NTM0XSwgWzQzLjI1Nzk0NDg1ODYzODA3LCAtMi45NDkwNTU0Njg2NzYyODkzXSwgWzQzLjI1NzU4NzUzNzcwNDEwNCwgLTIuOTQyNTIzODU4Njc4NDM1XSwgWzQzLjI1ODYwMzg1ODAyOTAzLCAtMi45NDEyNTIxNjIxMDMxNDU2XSwgWzQzLjI1OTkxNzYxMjEyNzM1LCAtMi45NDAwNzg1NTQ0ODI0NTQ0XV0sCiAgICAgICAgICAgICAgICB7ImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLCAiY29sb3IiOiAiI2ZjOGQ2MiIsICJkYXNoQXJyYXkiOiBudWxsLCAiZGFzaE9mZnNldCI6IG51bGwsICJmaWxsIjogZmFsc2UsICJmaWxsQ29sb3IiOiAiI2ZjOGQ2MiIsICJmaWxsT3BhY2l0eSI6IDAuMiwgImZpbGxSdWxlIjogImV2ZW5vZGQiLCAibGluZUNhcCI6ICJyb3VuZCIsICJsaW5lSm9pbiI6ICJyb3VuZCIsICJub0NsaXAiOiBmYWxzZSwgIm9wYWNpdHkiOiAxLjAsICJzbW9vdGhGYWN0b3IiOiAxLjAsICJzdHJva2UiOiB0cnVlLCAid2VpZ2h0IjogM30KICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzJhMzQxN2VjOTE1YjQyYjY5Y2VjNGUyMTgwMDQzYjI2KTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBwb3B1cF82MzRhN2FhMTJjMzA0OWU4YjM0NGNlODQ5YTAzYzc5YiA9IEwucG9wdXAoeyJtYXhXaWR0aCI6ICIxMDAlIn0pOwoKICAgICAgICAKICAgICAgICAgICAgdmFyIGh0bWxfMDE0NWZkNGM5Y2MzNDU5YTk5NjhiZTJhNDViMTIzMjEgPSAkKGA8ZGl2IGlkPSJodG1sXzAxNDVmZDRjOWNjMzQ1OWE5OTY4YmUyYTQ1YjEyMzIxIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij48dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCB0YWJsZS1ob3ZlciI+PHRyPjx0aD5kaXJlY3Rpb25faWQ8L3RoPjx0ZD48L3RkPjwvdHI+PHRyPjx0aD5yb3V0ZV9pZDwvdGg+PHRkPjI0MTwvdGQ+PC90cj48dHI+PHRoPnNlcnZpY2VfaWQ8L3RoPjx0ZD4xPC90ZD48L3RyPjx0cj48dGg+c2hhcGVfaWQ8L3RoPjx0ZD5zaGFwZV8xMjM8L3RkPjwvdHI+PHRyPjx0aD50cmlwX2hlYWRzaWduPC90aD48dGQ+IEluZGF1dHh1PC90ZD48L3RyPjx0cj48dGg+dHJpcF9pZDwvdGg+PHRkPjQxNjA4ODwvdGQ+PC90cj48L3RhYmxlPjwvZGl2PmApWzBdOwogICAgICAgICAgICBwb3B1cF82MzRhN2FhMTJjMzA0OWU4YjM0NGNlODQ5YTAzYzc5Yi5zZXRDb250ZW50KGh0bWxfMDE0NWZkNGM5Y2MzNDU5YTk5NjhiZTJhNDViMTIzMjEpOwogICAgICAgIAoKICAgICAgICBwb2x5X2xpbmVfYzQ4ZDQ1MTM5YTFlNGUwNTg1MWMwOTQ2OWNjOTU0NjIuYmluZFBvcHVwKHBvcHVwXzYzNGE3YWExMmMzMDQ5ZThiMzQ0Y2U4NDlhMDNjNzliKQogICAgICAgIDsKCiAgICAgICAgCiAgICAKICAgIAogICAgICAgICAgICB2YXIgbGF5ZXJfY29udHJvbF9mOGE1ZWI4YmNmMDQ0ZDM5YTY4NTAwM2M0MmRjNGFkZiA9IHsKICAgICAgICAgICAgICAgIGJhc2VfbGF5ZXJzIDogewogICAgICAgICAgICAgICAgICAgICJjYXJ0b2RicG9zaXRyb24iIDogdGlsZV9sYXllcl8xZjg5YTRmZDBmMTA0MjliYWE4NzNhYjI4ZTNlNTUwYSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBvdmVybGF5cyA6ICB7CiAgICAgICAgICAgICAgICAgICAgIlRyaXAgNDE0NjY4IiA6IGZlYXR1cmVfZ3JvdXBfYjBmYWUyZGUyYjE5NDIwYThmNjlhNTlmN2I0OWVmZTUsCiAgICAgICAgICAgICAgICAgICAgIlRyaXAgNDE0NzgwIiA6IGZlYXR1cmVfZ3JvdXBfYTkxODE4ZDQzNmZiNDdhMjg4OTA3YmM5NTM5NzZmZjYsCiAgICAgICAgICAgICAgICAgICAgIlRyaXAgNDA5MDE4IiA6IGZlYXR1cmVfZ3JvdXBfNjIwY2ZjNGI5ZTE3NGMwYWIwMzM1YzRkYmY1NDZkYTMsCiAgICAgICAgICAgICAgICAgICAgIlRyaXAgNDA5Mjg1IiA6IGZlYXR1cmVfZ3JvdXBfNmZhY2E5MmQ1MWZiNGIzYjllZjkwYzM1ODU4M2Y0MzUsCiAgICAgICAgICAgICAgICAgICAgIlRyaXAgNDEzMjQyIiA6IGZlYXR1cmVfZ3JvdXBfMTNiZmViYTI0OTQ3NDVhNzhmZmZmNzE2NDFjNGRlMjQsCiAgICAgICAgICAgICAgICAgICAgIlRyaXAgNDEzMzg4IiA6IGZlYXR1cmVfZ3JvdXBfZTk1ZDJhMDM4YzE0NDQzNGIyNjc0MDkwNTZiMWE5Y2QsCiAgICAgICAgICAgICAgICAgICAgIlRyaXAgNDI0OTg2IiA6IGZlYXR1cmVfZ3JvdXBfNmMwOTU1YWMxOGE4NDkzOGEwMjM3MzgxOWFhNjUzOWEsCiAgICAgICAgICAgICAgICAgICAgIlRyaXAgNDI1MDUxIiA6IGZlYXR1cmVfZ3JvdXBfNmRjMzc2ZmViNDc1NDdjZjhlNDU2ODYzNWQzYzcyMWQsCiAgICAgICAgICAgICAgICAgICAgIlRyaXAgNDA4MzI4IiA6IGZlYXR1cmVfZ3JvdXBfYjhlMTllZjBmODFkNDM0NWExZmZlNDJjM2Y0OGE4OTIsCiAgICAgICAgICAgICAgICAgICAgIlRyaXAgNDA4NTEwIiA6IGZlYXR1cmVfZ3JvdXBfNTgxNjVkYmE0MmQ1NGU1MjkwYmU5ODkzNjg2OTBkZGUsCiAgICAgICAgICAgICAgICAgICAgIlRyaXAgNDE0MzM0IiA6IGZlYXR1cmVfZ3JvdXBfMDA4NTNkZTYwZTgyNDIzYjliYzk2MTc4MjBjY2VkZjksCiAgICAgICAgICAgICAgICAgICAgIlRyaXAgNDE0NDc4IiA6IGZlYXR1cmVfZ3JvdXBfOGJlYzViZGQ0N2I4NDI4Zjk0NGMwMDQ4ZmM0NmY0OGQsCiAgICAgICAgICAgICAgICAgICAgIlRyaXAgNDA2MzA1IiA6IGZlYXR1cmVfZ3JvdXBfZGY3OTQ2MmI0ZDA1NGY0OWExMWFmNGEwYzliZTcwMjksCiAgICAgICAgICAgICAgICAgICAgIlRyaXAgNDA2NDcxIiA6IGZlYXR1cmVfZ3JvdXBfM2UwMTcwNzJmNjk5NDdmMGJkYTU3MWU5NGQ1YTdjOTQsCiAgICAgICAgICAgICAgICAgICAgIlRyaXAgNDE1Mjk5IiA6IGZlYXR1cmVfZ3JvdXBfYmI5YmVkZjcyYTMyNDUzYjhiZjVmNmRjYTlkMWI1NTMsCiAgICAgICAgICAgICAgICAgICAgIlRyaXAgNDE1NDYxIiA6IGZlYXR1cmVfZ3JvdXBfNGUxZTE4YWY2NmNlNGE1OTljMDcxYTJlYWYwNWNhZDYsCiAgICAgICAgICAgICAgICAgICAgIlRyaXAgNDE2NTQzIiA6IGZlYXR1cmVfZ3JvdXBfZDRmNjc4ZDZmODAzNGM5Y2I3YTg0YTllZDFmOGJmODQsCiAgICAgICAgICAgICAgICAgICAgIlRyaXAgNDE2NzI2IiA6IGZlYXR1cmVfZ3JvdXBfODhiNzUxY2U5ZDgzNDA0YmExMzk3MTllNTM4MjhmMDUsCiAgICAgICAgICAgICAgICAgICAgIlRyaXAgNDA5NjU4IiA6IGZlYXR1cmVfZ3JvdXBfOGUyM2UyMzc2MWRiNGQ5NDkwZTExMWY3MjUyNzk3ZTksCiAgICAgICAgICAgICAgICAgICAgIlRyaXAgNDMyNDIxIiA6IGZlYXR1cmVfZ3JvdXBfZDlkODRlMGNkM2I4NDU5ZGIzODVmMTY1ODQ3N2QzMWIsCiAgICAgICAgICAgICAgICAgICAgIlRyaXAgNDExNjU0IiA6IGZlYXR1cmVfZ3JvdXBfOGRmMTQzOGVkMmY5NDYyMmJlZThlZDllMGQxODVlMjAsCiAgICAgICAgICAgICAgICAgICAgIlRyaXAgNDExNzgwIiA6IGZlYXR1cmVfZ3JvdXBfY2FkMzAyOTY4ZTJmNDU3MmFlZTg2NjVjODBlNDZkZDgsCiAgICAgICAgICAgICAgICAgICAgIlRyaXAgNDE1NzM5IiA6IGZlYXR1cmVfZ3JvdXBfZTJlZjhiZWFhMjJlNGViY2E0ZjA3OGFhMGIwZjlhODAsCiAgICAgICAgICAgICAgICAgICAgIlRyaXAgNDE1ODc1IiA6IGZlYXR1cmVfZ3JvdXBfNmMxNWU4MGE0NTI2NDlkZjk5Y2ViZWU1NDI2MzEzOWIsCiAgICAgICAgICAgICAgICAgICAgIlRyaXAgNDE2Mjg5IiA6IGZlYXR1cmVfZ3JvdXBfOWZmOGJmMDBmYWJhNGYzMTg0ZTRkNzYwODJmNjEwODcsCiAgICAgICAgICAgICAgICAgICAgIlRyaXAgNDE2NDE2IiA6IGZlYXR1cmVfZ3JvdXBfNGVjZWI0ZGYxMWI5NGE5YWFjMTcwOWY5MTZkZjBiNTYsCiAgICAgICAgICAgICAgICAgICAgIlRyaXAgNDE0MDY3IiA6IGZlYXR1cmVfZ3JvdXBfNTM4YjE0ZjJjNzgxNDQ0MWE4NWU5NTJjOTYzYWJjOTQsCiAgICAgICAgICAgICAgICAgICAgIlRyaXAgNDE0MTc4IiA6IGZlYXR1cmVfZ3JvdXBfMWIyZTA0Yjc5ZjA2NDNhZTk0ZjQ0YWQ2NTUwNWU2ODgsCiAgICAgICAgICAgICAgICAgICAgIlRyaXAgNDA3ODQyIiA6IGZlYXR1cmVfZ3JvdXBfOGM3ZTNiM2Q5MDU2NDhmOWJkMGM3NGM2YzA0NmM4MDgsCiAgICAgICAgICAgICAgICAgICAgIlRyaXAgNDA3OTYzIiA6IGZlYXR1cmVfZ3JvdXBfMjRhNDBiNzAxZjMzNGE5ZjljYjE2OTczZTg3YTE2OWUsCiAgICAgICAgICAgICAgICAgICAgIlRyaXAgNDEwNjQzIiA6IGZlYXR1cmVfZ3JvdXBfOTJhMGQzZDk0ZjFlNGI2ZTk3YjNhNjBmY2ZlZmI5OTQsCiAgICAgICAgICAgICAgICAgICAgIlRyaXAgNDEwODY5IiA6IGZlYXR1cmVfZ3JvdXBfNGYwZTRhZmQwZmI0NGRmOGI5MWUxMjk5YjFhYTk0MmEsCiAgICAgICAgICAgICAgICAgICAgIlRyaXAgNDA3NDY5IiA6IGZlYXR1cmVfZ3JvdXBfMjY4NmY5ZDMwMDE4NDI2YTg0YWJmYzI3Mjc5MzEyMjQsCiAgICAgICAgICAgICAgICAgICAgIlRyaXAgNDA3NTI5IiA6IGZlYXR1cmVfZ3JvdXBfYWRhZjYyN2VhNmFmNGJmOWJiMjhjMzU0NWQ1NGE4OTYsCiAgICAgICAgICAgICAgICAgICAgIlRyaXAgNDEyNzk2IiA6IGZlYXR1cmVfZ3JvdXBfNGU3NDRjYTgxNDBiNGEyNjgzMTNkZGRjODE2ZjllZDIsCiAgICAgICAgICAgICAgICAgICAgIlRyaXAgNDE0OTM5IiA6IGZlYXR1cmVfZ3JvdXBfMjhkNDFkY2U0MjJlNGM3MGIwZTUzYzMyNGJiMGNhZjYsCiAgICAgICAgICAgICAgICAgICAgIlRyaXAgNDE1MDgwIiA6IGZlYXR1cmVfZ3JvdXBfMjEwMWY4Zjg0ZDA2NDI3NmI3ZjVlODA1YTYzNTUwMjgsCiAgICAgICAgICAgICAgICAgICAgIlRyaXAgNDI0NTUxIiA6IGZlYXR1cmVfZ3JvdXBfN2RlOTc3OGUxMGIwNDExMWFiNjYzNjIyODVlMTlhYzIsCiAgICAgICAgICAgICAgICAgICAgIlRyaXAgNDI0NjM0IiA6IGZlYXR1cmVfZ3JvdXBfMWI4NDE3YWVlOTQ5NGUzMDg4NGUzNjA5YTM0ZDUyYmEsCiAgICAgICAgICAgICAgICAgICAgIlRyaXAgNDEwMjY2IiA6IGZlYXR1cmVfZ3JvdXBfMDA0YjYzZjMxZDRmNDk5ZDk1ZjRmY2VlZmQxZjQwMzYsCiAgICAgICAgICAgICAgICAgICAgIlRyaXAgNDEwNDExIiA6IGZlYXR1cmVfZ3JvdXBfNTJhZGMwMjJlYjNhNDk5MGE5ODcwYTBkODliY2U0OGUsCiAgICAgICAgICAgICAgICAgICAgIlRyaXAgNDA2NjI4IiA6IGZlYXR1cmVfZ3JvdXBfMGQxODU5NWRlMjExNGVlNGJhZGU0OTVhZTRmMDA5ODEsCiAgICAgICAgICAgICAgICAgICAgIlRyaXAgNDA2ODE1IiA6IGZlYXR1cmVfZ3JvdXBfYzUzNGQyZGJiYjU5NDM5MWJiN2UwMzNhNWI2MDRiYjIsCiAgICAgICAgICAgICAgICAgICAgIlRyaXAgNDA5OTc2IiA6IGZlYXR1cmVfZ3JvdXBfNmJkMDhkODI1MmE5NDZkNTliNmQ2NWU1ODFjOWJiOWQsCiAgICAgICAgICAgICAgICAgICAgIlRyaXAgNDEwMTAwIiA6IGZlYXR1cmVfZ3JvdXBfZWIwN2I3MWZhZWRiNDFjMWIzNjAzMGM4OGM5MzAwYTIsCiAgICAgICAgICAgICAgICAgICAgIlRyaXAgNDExMjI2IiA6IGZlYXR1cmVfZ3JvdXBfM2U2MDdmOTU5MWRmNGJkZDg5MDk2MjMxYzdlN2I5MjcsCiAgICAgICAgICAgICAgICAgICAgIlRyaXAgNDExNTA4IiA6IGZlYXR1cmVfZ3JvdXBfNDBhNWExMDY2NjBjNDM5MDkxOTE5ZGEyMWVjNDRlNmEsCiAgICAgICAgICAgICAgICAgICAgIlRyaXAgNDA3MDI2IiA6IGZlYXR1cmVfZ3JvdXBfOGYyNmUwN2I5NzI1NDllMmIzNTBiYTQ5YzNmZjM3ODcsCiAgICAgICAgICAgICAgICAgICAgIlRyaXAgNDA3MTM4IiA6IGZlYXR1cmVfZ3JvdXBfYjkyNjQ5NThlN2U3NDI1YWIwOWVjNjJhYWYyMDQ2NTIsCiAgICAgICAgICAgICAgICAgICAgIlRyaXAgNDE2MDg4IiA6IGZlYXR1cmVfZ3JvdXBfMmEzNDE3ZWM5MTViNDJiNjljZWM0ZTIxODAwNDNiMjYsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9OwogICAgICAgICAgICBMLmNvbnRyb2wubGF5ZXJzKAogICAgICAgICAgICAgICAgbGF5ZXJfY29udHJvbF9mOGE1ZWI4YmNmMDQ0ZDM5YTY4NTAwM2M0MmRjNGFkZi5iYXNlX2xheWVycywKICAgICAgICAgICAgICAgIGxheWVyX2NvbnRyb2xfZjhhNWViOGJjZjA0NGQzOWE2ODUwMDNjNDJkYzRhZGYub3ZlcmxheXMsCiAgICAgICAgICAgICAgICB7ImF1dG9aSW5kZXgiOiB0cnVlLCAiY29sbGFwc2VkIjogdHJ1ZSwgInBvc2l0aW9uIjogInRvcHJpZ2h0In0KICAgICAgICAgICAgKS5hZGRUbyhtYXBfMzY4YTg3OWQ5MzdlNDU2NmEyZTVhNjU2MTEyZjlkYjEpOwogICAgICAgIAogICAgCiAgICAgICAgICAgIG1hcF8zNjhhODc5ZDkzN2U0NTY2YTJlNWE2NTYxMTJmOWRiMS5maXRCb3VuZHMoCiAgICAgICAgICAgICAgICBbWzQzLjIyNjM3MDk4ODI1NDUxLCAtMi45NzQ5NDk2OTQyNTQ3MjUzXSwgWzQzLjI4NDA1NjE2NjQxNzU3LCAtMi44OTY1MDYxMTY2OTM3NDRdXSwKICAgICAgICAgICAgICAgIHt9CiAgICAgICAgICAgICk7CiAgICAgICAgCjwvc2NyaXB0Pg==\" style=\"position:absolute;width:100%;height:100%;left:0;top:0;border:none !important;\" allowfullscreen webkitallowfullscreen mozallowfullscreen></iframe></div></div>"
      ],
      "text/plain": [
       "<folium.folium.Map at 0x28d1ac32688>"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "feed.map_trips(\n",
    "    feed.trips.groupby('route_id').first().trip_id.head(50)\n",
    ")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Frequency conversion currently work only for one specific service and date, and on one given time period.  \n",
    "It computes the average headway over this time period."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Restrict to one date and merge services"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "feed = feed.restrict(dates=['20191210'])\n",
    "feed.group_services()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>indicator</th>\n",
       "      <th>value</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>agencies</td>\n",
       "      <td>[Bilbobus]</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>running_services</td>\n",
       "      <td>[1]</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>timezone</td>\n",
       "      <td>Europe/Madrid</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>start_date</td>\n",
       "      <td>20191210</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>end_date</td>\n",
       "      <td>20191210</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>num_routes</td>\n",
       "      <td>82</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>num_trips</td>\n",
       "      <td>3297</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>num_stops</td>\n",
       "      <td>498</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>num_shapes</td>\n",
       "      <td>124</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>num_frequencies</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "          indicator          value\n",
       "0          agencies     [Bilbobus]\n",
       "1  running_services            [1]\n",
       "2          timezone  Europe/Madrid\n",
       "3        start_date       20191210\n",
       "4          end_date       20191210\n",
       "5        num_routes             82\n",
       "6         num_trips           3297\n",
       "7         num_stops            498\n",
       "8        num_shapes            124\n",
       "9   num_frequencies              0"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "feed.describe()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Build simplified patterns by clustering stops"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "feed.build_stop_clusters(distance_threshold=300)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "N stops: 498\n",
      "N clusters: 165\n"
     ]
    }
   ],
   "source": [
    "print('N stops:', len(feed.stops))\n",
    "print('N clusters:', len(feed.stops.cluster_id.unique()))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "feed.build_patterns(on='cluster_id')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "N trips: 3297\n",
      "N patterns: 124\n",
      "N routes: 82\n"
     ]
    }
   ],
   "source": [
    "print('N trips:', len(feed.trips))\n",
    "print('N patterns:', len(feed.trips.pattern_id.unique()))\n",
    "print('N routes:', len(feed.trips.route_id.unique()))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>indicator</th>\n",
       "      <th>value</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>agencies</td>\n",
       "      <td>[Bilbobus]</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>running_services</td>\n",
       "      <td>[1]</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>timezone</td>\n",
       "      <td>Europe/Madrid</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>start_date</td>\n",
       "      <td>20191210</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>end_date</td>\n",
       "      <td>20191210</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>num_routes</td>\n",
       "      <td>82</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>num_trips</td>\n",
       "      <td>3297</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>num_stops</td>\n",
       "      <td>498</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>num_shapes</td>\n",
       "      <td>124</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>num_frequencies</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "          indicator          value\n",
       "0          agencies     [Bilbobus]\n",
       "1  running_services            [1]\n",
       "2          timezone  Europe/Madrid\n",
       "3        start_date       20191210\n",
       "4          end_date       20191210\n",
       "5        num_routes             82\n",
       "6         num_trips           3297\n",
       "7         num_stops            498\n",
       "8        num_shapes            124\n",
       "9   num_frequencies              0"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "feed.describe()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Convert to frequencies"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████████████████████████████████████████████████████████████████████████████| 75/75 [00:00<00:00, 79.03it/s]\n"
     ]
    }
   ],
   "source": [
    "time_range = ['08:00:00', '10:00:00']  # time format must be HH:MM:SS\n",
    "feed_f = feed.convert_to_frequencies(time_range=time_range)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>indicator</th>\n",
       "      <th>value</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>agencies</td>\n",
       "      <td>[Bilbobus]</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>running_services</td>\n",
       "      <td>[1]</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>timezone</td>\n",
       "      <td>Europe/Madrid</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>start_date</td>\n",
       "      <td>20191210</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>end_date</td>\n",
       "      <td>20191210</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>num_routes</td>\n",
       "      <td>67</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>num_trips</td>\n",
       "      <td>75</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>num_stops</td>\n",
       "      <td>495</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>num_shapes</td>\n",
       "      <td>75</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>num_frequencies</td>\n",
       "      <td>75</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "          indicator          value\n",
       "0          agencies     [Bilbobus]\n",
       "1  running_services            [1]\n",
       "2          timezone  Europe/Madrid\n",
       "3        start_date       20191210\n",
       "4          end_date       20191210\n",
       "5        num_routes             67\n",
       "6         num_trips             75\n",
       "7         num_stops            495\n",
       "8        num_shapes             75\n",
       "9   num_frequencies             75"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "feed_f.describe()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Build nodes and links"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "feed_f.build_links_and_nodes()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>0</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>stop_id</th>\n",
       "      <td>2201</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>stop_code</th>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>stop_name</th>\n",
       "      <td>Anselma de Salces (2)</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>stop_desc</th>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>zone_id</th>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>stop_url</th>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>location_type</th>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>cluster_id</th>\n",
       "      <td>85</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>geometry</th>\n",
       "      <td>POINT (506258.4033893289 14790384.01825237)</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                                                         0\n",
       "stop_id                                               2201\n",
       "stop_code                                              NaN\n",
       "stop_name                            Anselma de Salces (2)\n",
       "stop_desc                                              NaN\n",
       "zone_id                                                NaN\n",
       "stop_url                                               NaN\n",
       "location_type                                          NaN\n",
       "cluster_id                                              85\n",
       "geometry       POINT (506258.4033893289 14790384.01825237)"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "feed_f.nodes.head(1).T"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>0</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>index</th>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>a</th>\n",
       "      <td>1604</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>trip_id</th>\n",
       "      <td>189_0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>link_sequence</th>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>departure_time</th>\n",
       "      <td>27900</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>b</th>\n",
       "      <td>1605</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>arrival_time</th>\n",
       "      <td>27960</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>time</th>\n",
       "      <td>60</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>headway</th>\n",
       "      <td>900</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>pattern_id</th>\n",
       "      <td>189_0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>route_id</th>\n",
       "      <td>189</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>service_id</th>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>trip_headsign</th>\n",
       "      <td>Plaza Biribila</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>direction_id</th>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>shape_id</th>\n",
       "      <td>shape_009</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>agency_id</th>\n",
       "      <td>27</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>route_short_name</th>\n",
       "      <td>01_IDA</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>route_long_name</th>\n",
       "      <td>Arangoiti - Plaza Biribila</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>route_desc</th>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>route_type</th>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>route_url</th>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>route_color</th>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>geometry</th>\n",
       "      <td>LINESTRING (504266.4483006593 14791400.9602043...</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                                                                  0\n",
       "index                                                             0\n",
       "a                                                              1604\n",
       "trip_id                                                       189_0\n",
       "link_sequence                                                     1\n",
       "departure_time                                                27900\n",
       "b                                                              1605\n",
       "arrival_time                                                  27960\n",
       "time                                                             60\n",
       "headway                                                         900\n",
       "pattern_id                                                    189_0\n",
       "route_id                                                        189\n",
       "service_id                                                        1\n",
       "trip_headsign                                        Plaza Biribila\n",
       "direction_id                                                    NaN\n",
       "shape_id                                                  shape_009\n",
       "agency_id                                                        27\n",
       "route_short_name                                             01_IDA\n",
       "route_long_name                          Arangoiti - Plaza Biribila\n",
       "route_desc                                                      NaN\n",
       "route_type                                                        3\n",
       "route_url                                                       NaN\n",
       "route_color                                                     NaN\n",
       "geometry          LINESTRING (504266.4483006593 14791400.9602043..."
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "feed_f.links.head(1).T"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## All in one\n",
    "While we recommand to build the nodes and links gradually by exploring the GTFS data first, it is also possible to do it in one line."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>indicator</th>\n",
       "      <th>value</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>agencies</td>\n",
       "      <td>[Bilbobus]</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>running_services</td>\n",
       "      <td>[1]</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>timezone</td>\n",
       "      <td>Europe/Madrid</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>start_date</td>\n",
       "      <td>20191210</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>end_date</td>\n",
       "      <td>20200310</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>num_routes</td>\n",
       "      <td>92</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>num_trips</td>\n",
       "      <td>3297</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>num_stops</td>\n",
       "      <td>498</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>num_shapes</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>num_frequencies</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "          indicator          value\n",
       "0          agencies     [Bilbobus]\n",
       "1  running_services            [1]\n",
       "2          timezone  Europe/Madrid\n",
       "3        start_date       20191210\n",
       "4          end_date       20200310\n",
       "5        num_routes             92\n",
       "6         num_trips           3297\n",
       "7         num_stops            498\n",
       "8        num_shapes              0\n",
       "9   num_frequencies              0"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "feed = importer.GtfsImporter(path=data + r'bilbao.zip', dist_units='m')\n",
    "feed.describe()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Restricting to date…\n",
      "Grouping services…\n",
      "Cleaning…\n",
      "Clustering stops…\n",
      "Building patterns…\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "  8%|██████▋                                                                            | 6/75 [00:00<00:01, 58.81it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Converting to frequencies…\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████████████████████████████████████████████████████████████████████████████| 75/75 [00:00<00:00, 75.68it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Building links and nodes…\n"
     ]
    }
   ],
   "source": [
    "imp = feed.build(\n",
    "    date='20191210',\n",
    "    time_range=['08:00:00', '10:00:00'],\n",
    "    cluster_distance_threshold=300 # by default: None and no clustering\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>indicator</th>\n",
       "      <th>value</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>agencies</td>\n",
       "      <td>[Bilbobus]</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>running_services</td>\n",
       "      <td>[1]</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>timezone</td>\n",
       "      <td>Europe/Madrid</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>start_date</td>\n",
       "      <td>20191210</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>end_date</td>\n",
       "      <td>20191210</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>num_routes</td>\n",
       "      <td>67</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>num_trips</td>\n",
       "      <td>75</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>num_stops</td>\n",
       "      <td>495</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>num_shapes</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>num_frequencies</td>\n",
       "      <td>75</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "          indicator          value\n",
       "0          agencies     [Bilbobus]\n",
       "1  running_services            [1]\n",
       "2          timezone  Europe/Madrid\n",
       "3        start_date       20191210\n",
       "4          end_date       20191210\n",
       "5        num_routes             67\n",
       "6         num_trips             75\n",
       "7         num_stops            495\n",
       "8        num_shapes              0\n",
       "9   num_frequencies             75"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "imp.describe()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>index</th>\n",
       "      <th>a</th>\n",
       "      <th>trip_id</th>\n",
       "      <th>link_sequence</th>\n",
       "      <th>departure_time</th>\n",
       "      <th>b</th>\n",
       "      <th>arrival_time</th>\n",
       "      <th>time</th>\n",
       "      <th>headway</th>\n",
       "      <th>pattern_id</th>\n",
       "      <th>...</th>\n",
       "      <th>direction_id</th>\n",
       "      <th>shape_id</th>\n",
       "      <th>agency_id</th>\n",
       "      <th>route_short_name</th>\n",
       "      <th>route_long_name</th>\n",
       "      <th>route_desc</th>\n",
       "      <th>route_type</th>\n",
       "      <th>route_url</th>\n",
       "      <th>route_color</th>\n",
       "      <th>geometry</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0</td>\n",
       "      <td>1604</td>\n",
       "      <td>189_0</td>\n",
       "      <td>1</td>\n",
       "      <td>27900.0</td>\n",
       "      <td>1605</td>\n",
       "      <td>27960.0</td>\n",
       "      <td>60.0</td>\n",
       "      <td>900.0</td>\n",
       "      <td>189_0</td>\n",
       "      <td>...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>27</td>\n",
       "      <td>01_IDA</td>\n",
       "      <td>Arangoiti - Plaza Biribila</td>\n",
       "      <td>NaN</td>\n",
       "      <td>3</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>LINESTRING (504266.448 14791400.960, 504088.19...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>1605</td>\n",
       "      <td>189_0</td>\n",
       "      <td>2</td>\n",
       "      <td>27960.0</td>\n",
       "      <td>1702</td>\n",
       "      <td>28140.0</td>\n",
       "      <td>180.0</td>\n",
       "      <td>900.0</td>\n",
       "      <td>189_0</td>\n",
       "      <td>...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>27</td>\n",
       "      <td>01_IDA</td>\n",
       "      <td>Arangoiti - Plaza Biribila</td>\n",
       "      <td>NaN</td>\n",
       "      <td>3</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>LINESTRING (504088.197 14791399.303, 503796.02...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>2</td>\n",
       "      <td>1702</td>\n",
       "      <td>189_0</td>\n",
       "      <td>3</td>\n",
       "      <td>28140.0</td>\n",
       "      <td>1703</td>\n",
       "      <td>28200.0</td>\n",
       "      <td>60.0</td>\n",
       "      <td>900.0</td>\n",
       "      <td>189_0</td>\n",
       "      <td>...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>27</td>\n",
       "      <td>01_IDA</td>\n",
       "      <td>Arangoiti - Plaza Biribila</td>\n",
       "      <td>NaN</td>\n",
       "      <td>3</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>LINESTRING (503796.023 14791563.341, 503745.17...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>3</td>\n",
       "      <td>1703</td>\n",
       "      <td>189_0</td>\n",
       "      <td>4</td>\n",
       "      <td>28200.0</td>\n",
       "      <td>1306</td>\n",
       "      <td>28440.0</td>\n",
       "      <td>240.0</td>\n",
       "      <td>900.0</td>\n",
       "      <td>189_0</td>\n",
       "      <td>...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>27</td>\n",
       "      <td>01_IDA</td>\n",
       "      <td>Arangoiti - Plaza Biribila</td>\n",
       "      <td>NaN</td>\n",
       "      <td>3</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>LINESTRING (503745.174 14791526.405, 503618.05...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>4</td>\n",
       "      <td>1306</td>\n",
       "      <td>189_0</td>\n",
       "      <td>5</td>\n",
       "      <td>28440.0</td>\n",
       "      <td>1414</td>\n",
       "      <td>28680.0</td>\n",
       "      <td>240.0</td>\n",
       "      <td>900.0</td>\n",
       "      <td>189_0</td>\n",
       "      <td>...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>27</td>\n",
       "      <td>01_IDA</td>\n",
       "      <td>Arangoiti - Plaza Biribila</td>\n",
       "      <td>NaN</td>\n",
       "      <td>3</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>LINESTRING (503618.056 14791226.062, 504049.58...</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 23 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "   index     a trip_id  link_sequence  departure_time     b  arrival_time  \\\n",
       "0      0  1604   189_0              1         27900.0  1605       27960.0   \n",
       "1      1  1605   189_0              2         27960.0  1702       28140.0   \n",
       "2      2  1702   189_0              3         28140.0  1703       28200.0   \n",
       "3      3  1703   189_0              4         28200.0  1306       28440.0   \n",
       "4      4  1306   189_0              5         28440.0  1414       28680.0   \n",
       "\n",
       "    time  headway pattern_id  ... direction_id shape_id agency_id  \\\n",
       "0   60.0    900.0      189_0  ...          NaN      NaN        27   \n",
       "1  180.0    900.0      189_0  ...          NaN      NaN        27   \n",
       "2   60.0    900.0      189_0  ...          NaN      NaN        27   \n",
       "3  240.0    900.0      189_0  ...          NaN      NaN        27   \n",
       "4  240.0    900.0      189_0  ...          NaN      NaN        27   \n",
       "\n",
       "   route_short_name             route_long_name route_desc route_type  \\\n",
       "0            01_IDA  Arangoiti - Plaza Biribila        NaN          3   \n",
       "1            01_IDA  Arangoiti - Plaza Biribila        NaN          3   \n",
       "2            01_IDA  Arangoiti - Plaza Biribila        NaN          3   \n",
       "3            01_IDA  Arangoiti - Plaza Biribila        NaN          3   \n",
       "4            01_IDA  Arangoiti - Plaza Biribila        NaN          3   \n",
       "\n",
       "  route_url route_color                                           geometry  \n",
       "0       NaN         NaN  LINESTRING (504266.448 14791400.960, 504088.19...  \n",
       "1       NaN         NaN  LINESTRING (504088.197 14791399.303, 503796.02...  \n",
       "2       NaN         NaN  LINESTRING (503796.023 14791563.341, 503745.17...  \n",
       "3       NaN         NaN  LINESTRING (503745.174 14791526.405, 503618.05...  \n",
       "4       NaN         NaN  LINESTRING (503618.056 14791226.062, 504049.58...  \n",
       "\n",
       "[5 rows x 23 columns]"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "imp.links.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>stop_id</th>\n",
       "      <th>stop_code</th>\n",
       "      <th>stop_name</th>\n",
       "      <th>stop_desc</th>\n",
       "      <th>zone_id</th>\n",
       "      <th>stop_url</th>\n",
       "      <th>location_type</th>\n",
       "      <th>cluster_id</th>\n",
       "      <th>geometry</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>2201</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Anselma de Salces (2)</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>85</td>\n",
       "      <td>POINT (506258.403 14790384.018)</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2417</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Trauko (14)</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>10</td>\n",
       "      <td>POINT (506528.037 14790435.054)</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3103</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Kepa Enbeitia \"Urretxindorra\"</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>157</td>\n",
       "      <td>POINT (508092.006 14789626.524)</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>6209</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Gregorio la Revilla 1</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>56</td>\n",
       "      <td>POINT (504935.494 14790091.282)</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>6210</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Gregorio la Revilla 17</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>79</td>\n",
       "      <td>POINT (504867.070 14789866.493)</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "  stop_id stop_code                      stop_name stop_desc zone_id stop_url  \\\n",
       "0    2201       NaN          Anselma de Salces (2)       NaN     NaN      NaN   \n",
       "1    2417       NaN                    Trauko (14)       NaN     NaN      NaN   \n",
       "2    3103       NaN  Kepa Enbeitia \"Urretxindorra\"       NaN     NaN      NaN   \n",
       "3    6209       NaN          Gregorio la Revilla 1       NaN     NaN      NaN   \n",
       "4    6210       NaN         Gregorio la Revilla 17       NaN     NaN      NaN   \n",
       "\n",
       "   location_type  cluster_id                         geometry  \n",
       "0            NaN          85  POINT (506258.403 14790384.018)  \n",
       "1            NaN          10  POINT (506528.037 14790435.054)  \n",
       "2            NaN         157  POINT (508092.006 14789626.524)  \n",
       "3            NaN          56  POINT (504935.494 14790091.282)  \n",
       "4            NaN          79  POINT (504867.070 14789866.493)  "
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "imp.nodes.head()"
   ]
  }
 ],
 "metadata": {
  "anaconda-cloud": {},
  "kernelspec": {
   "display_name": "Python [conda env:quetzal_env_c]",
   "language": "python",
   "name": "conda-env-quetzal_env_c-py"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
